16+
Вторник
16 января
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

0xFF

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
fk0  (08.12.2012 16:00 - 08.12.2012 16:12, файл(ы), ссылка) , в ответ на В первом приближении кто просвятит - есть два импульса, заполненных синосоидой, частота которого меняется от старта импульса до конца линейно, скажем 10-100 кгц, если эти импульсы смешать с заданным сдвигом фазы как вычислить момент гда начало автор: wwhale
Ответ для whale из 0xff. Да. Но в лоб считать -- очень много операций. Поэтому что видится -- определить максимальную дистанцию и соответственно размер данных (сэмплов) по ней. В момент и после импульса записываем сколько определили. Потом над 
всем массивом делаем, короче смотри пример для octave:
A=wavread ("rec.wav");  # считали файл с микрофона
C=wavread ("chirp.wav"); # считали файл который излучали

# посчитали корреляцию (весь матан в этой строчке)
# считать в лоб (F[t]=Сумма(P[x]*M[x-t])при x =0-x макс) дольше гораздо.
# для (I)FFT известны быстрые алгоритмы и есть библиотеки.
n=2^nextpow2(2*length(A)-1)
R=real(ifft(fft(A,n).*conj(fft(C,n)))); 

# но вообще нам интересна амплитуда огибающей, т.к. в том месте где
# корреляция сильней, там она больше (а форма сигнала в общем-то и есть сам входной сигнал)
F=abs(R); 

# применили фильтр низких частот -- в реальной программе тут FFT не нужен,
# подойтёт любой быстро считаемый вариант, просто в octave с этим туго...
# c -- это частота среза (относительно размера окна в целом, высокие частоты выкидываем)
# без фильтра получим 10000 пиков, что не осмысленно.
c=0.003; f=length(F); T=fft(F); T(round(c*f) : round(f-c*f))=0; O=real(ifft(T));

plot (O); # см. картинку, максимумы -- эхо.
В общем-то всё. Теперь нехитрым алгоритмом можно найти самый максимальный и левый максимум -- это сигнал из колонки. Потом найти минимум. Потом следующий максимум -- что-то непонятное. Следующий минимум потом найти. Потом следующий максимум -- эхо которое видно глазами на спектре (см. предыдущее моё сообщение). Ну и так в цикле... Видно, кстати, что между первым и третьим максимумом, примерно, 853 сэмпла или 17.8мс (48000Гц samplerate), что согласуется с предыдущими результатами (фурье). А вот второй максимум -- это что-то не видимое в первом случае.
Прикреплённые файлы:
correlation.jpg:13 K

chirp.wav (9 K)
rec.wav (25 K)

[ZX]
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII