ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
23 апреля
374538 Топик полностью
Связанные сообщения
Локатор
Вопрос посвящён теме как правильно сделать радар (см. ниже).2019-01-31
fk0, легенда (08.12.2012 16:00 - 16:12, просмотров: 682) MBedder ответил wwhale на В первом приближении кто просвятит - есть два импульса, заполненных синосоидой, частота которого меняется от старта импульса до конца линейно, скажем 10-100 кгц, если эти импульсы смешать с заданным сдвигом фазы как вычислить момент гда начало
Ответ для whale из 0xff. Да. Но в лоб считать -- очень много операций. Поэтому что видится -- определить максимальную дистанцию и соответственно размер данных (сэмплов) по ней. В момент и после импульса записываем сколько определили. Потом над http://caxapa.ru/374477.html
всем массивом делаем, короче смотри пример для 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), что согласуется с предыдущими результатами (фурье). А вот второй максимум -- это что-то не видимое в первом случае.
[ZX]