Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Уточнение момента прихода сигнала
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
Страницы: 1, 2
DMax
Доброго времени суток всем!

Есть такая проблема: надо определить момент прихода сигнала с точностью выше, чем интервал сэплирования. Сигнал - заранее известная последовательность с хорошими корреляционными свойствами. Собственно для решения данной задачи я придумал следующий алгоритм.
1) Простым согласованным фильтром обнаруживаем то место в оцифрованном сигнале на удвоенной частоте, где пик достигает максимального значения.
2) Далее, берем и делаем БПФ на принятую последовательность и БПФ на эталонную последовательность и вычитаем из фаз первого преобразования соответствующие фазы второго.
3) Согласно теореме о задержке, если принятый сигнал был оцифрован точно в момент его начала, то все разности фаз будут иметь одинаковое значение. В противном случае если построить график phi(i), то он будет иметь вид наклоненной прямой и угол наклона определяет величину задержки прихода сигнала относительно первого сэмпла. Далее, применяя несложные формулы, я эту задержку и вычисляю.

Но тут не всё так хорошо как хотелось бы. Во-первых, начиная с какого-то соотношения сигнал-шум, наблюдается такая картина: коррелятор без проблем обнаружает эту последовательность (например, чёткий пик с корреляцией 0.5), но этот алгоритм уже выдает точно не правильные решения. Вопрос, как оценить то соотношение сигнал-шум, при котором данный алгоритм будет выдавать эту задержку хотя бы с точность в пол отсчета? Или в более общем виде, как оценить SNR, при котором точность будет заданной или выше?

Второй вопрос: может быть есть более продвинутые спобособы решения данной задачи? Ткните мордой в документацию, плиз.
DRUID3
Котельников и Найквист крутятся в гробах...
petrov
Цитата(DMax @ Sep 4 2009, 23:25) *
Но тут не всё так хорошо как хотелось бы. Во-первых, начиная с какого-то соотношения сигнал-шум, наблюдается такая картина: коррелятор без проблем обнаружает эту последовательность (например, чёткий пик с корреляцией 0.5), но этот алгоритм уже выдает точно не правильные решения.


Работает плохо поэтому:

Цитата(DMax @ Sep 4 2009, 23:25) *
2) Далее, берем и делаем БПФ на принятую последовательность...


Надо анализировать сигнал на выходе согласованного фильтра.

Цитата(DMax @ Sep 4 2009, 23:25) *
Вопрос, как оценить то соотношение сигнал-шум, при котором данный алгоритм будет выдавать эту задержку хотя бы с точность в пол отсчета? Или в более общем виде, как оценить SNR, при котором точность будет заданной или выше?


В радиолокации решены вопросы по поводу точности определения прихода импульса на фоне шума.

Цитата(DMax @ Sep 4 2009, 23:25) *
Второй вопрос: может быть есть более продвинутые спобособы решения данной задачи?


Входной сигнал нормирован АРУ, пик на выходе согласованного фильтра аппроксимируем параболой, черерез два соседних максимальных отсчёта проводим параболу и находим её максимум.
DMax
Цитата(petrov @ Sep 5 2009, 10:47) *
В радиолокации решены вопросы по поводу точности определения прихода импульса на фоне шума.

А что бы почитать на эту тему? И про то, какие там применяются методы.

Цитата(petrov @ Sep 5 2009, 10:47) *
Входной сигнал нормирован АРУ, пик на выходе согласованного фильтра аппроксимируем параболой, через два соседних максимальных отсчёта проводим параболу и находим её максимум.

Как бы параболу можно провести, но не через два, а через три отсчета. То есть через пик, один отсчет слева и один справа от пика. Более того, такой способ был реализован. Однако его точность ещё более хреновая, чем у описанного выше метода. Проверялось путём двухканального приёма, в котором один канал задержан относительно другого на заранее известно время, которое меньше межсэмплового интервала. Всё дело в том, что по крайней мере на фазовой модуляции, а именно с таким сигналом я имею дело, пик корреляции, если рассматривать его в непрерывном виде, имеет форму близкую к трапеции с закруглёнными углами - что весьма отличается от параболы с описанными выше свойствами.

Цитата(DRUID3 @ Sep 5 2009, 00:27) *
Котельников и Найквист крутятся в гробах...

Узнал новые фамилии и решил похвастаться что ли?
DRUID3
Цитата(DMax @ Sep 5 2009, 23:29) *
Узнал новые фамилии и решил похвастаться что ли?

Пытаетесь сострить smile.gif ?
alex_os
Цитата(DMax @ Sep 6 2009, 00:29) *
Как бы параболу можно провести, но не через два, а через три отсчета. То есть через пик, один отсчет слева и один справа от пика. Более того, такой способ был реализован. Однако его точность ещё более хреновая, чем у описанного выше метода. Проверялось путём двухканального приёма, в котором один канал задержан относительно другого на заранее известно время, которое меньше межсэмплового интервала. Всё дело в том, что по крайней мере на фазовой модуляции, а именно с таким сигналом я имею дело, пик корреляции, если рассматривать его в непрерывном виде, имеет форму близкую к трапеции с закруглёнными углами - что весьма отличается от параболы с описанными выше свойствами.


Апроксимация параболой по трем точкам должна работать. А почему у фазовой модуляции автокорреляционная функция у Вас получается - трапеция?! Если фазовая модуляция прямоугольными импульсами, то автокорреляция имеет вид треугольника, если модулирующая последовательность офильтрованна приподнятым косинусом, то автокорреляция более округлый вид имеет и похожа на параболу...
GetSmart
Можно я тут сумничаю? smile.gif

Надо сделать ещё одну "кореляцию" кореляционной функции с треугольником. Шумы могут исказить вершину треугольника и тогда три верхних точки будут врать. Поэтому нужно использовать в расчётах как можно больше точек в окресности вершины, принадлежащих треугольнику. Короче, алгоритм должен "спозиционировать" опорный треугольник на функции кореляции так, чтобы был минимум квадратов отклонений. При этом все шумы (неровности на треугольнике) сгладятся и не повлияют на точность. В простом виде такой алгоритм заключается в нахождении двух линий - сторон треугольника слева и справа от вершины, и уже точку пересечения линий можно посчитать с высокой точностью, гораздо выше одного сэмпла.
petrov
Парабола известна заранее(кроме сдвига), 2-х точек на этой параболе достаточно чтобы её максимум найти.

Если вершина плоская то и максимум неопределён, точность определения времени прихода зависит от формы импульса.
SSerge
Похожую задачу решают в GPS-приёмниках. Посмотрите вот это:
http://lea.hamradio.si/~s53mv/navsats/theory.html
Там реализация до предела упрощённая, но основная идея изложена.
DMax
Цитата(alex_os @ Sep 6 2009, 11:25) *
Аппроксимация параболой по трем точкам должна работать. А почему у фазовой модуляции автокорреляционная функция у Вас получается - трапеция?! Если фазовая модуляция прямоугольными импульсами, то автокорреляция имеет вид треугольника, если модулирующая последовательность офильтрованна приподнятым косинусом, то автокорреляция более округлый вид имеет и похожа на параболу...


Она имеет вид треугольника в том случае, когда частота дискретизации совпадает с частотой манипулирования фазой. Попробуйте увеличить частоту дискретизации скажем раз в 10 и вы увидите, что (в зависимости от того как ляжет такт оцифровки) пик согласованного фильтра у вас расползется на 9-10 точек примерно одного уровня.

Тут, наверное, надо дать пояснение - когда я считаю корреляцию с сигналом на удвоенной частоте дискретизации, то я децимирую отсчеты в два раза перед подачей на коррелятор. Я пробовал делать по другому - то есть эталонную последовательность удлинял в два раза путём дублирования эталонных отсчетов и считал в согласованном фильтре корреляцию на удвоенной частоте - так получились не очень хорошие результаты. А если считать корреляцию с децимированием в два раза то (опять таки в зависимости от того как ляжет так оцифровки) последовательность значений коррелятора может выглядеть двумя вариантами. Например:
1) ..., 0.14, 0.92, 0.94, 0.28, ... - это если момент прихода сигнала попал примерно между значениями 0.92 и 0.94.
2) ..., 0.35, 0.95, 0.52, .... - это если мы более-менее четко попали значением 0.95 в момент прихода сигнала.

Таким образом, если второй вариант напоминает треугольник или параболу, то первый напоминает больше трапецию.
GetSmart
Цитата(DMax @ Sep 6 2009, 14:37) *
1) ..., 0.14, 0.92, 0.94, 0.28, ... - это если момент прихода сигнала попал примерно между значениями 0.92 и 0.94.
...
Таким образом, если второй вариант напоминает треугольник или параболу, то первый напоминает больше трапецию.

Это частный случай сдвинутого треугольника.
DMax
Цитата(GetSmart @ Sep 6 2009, 12:42) *
Это частный случай сдвинутого треугольника.

Вы математик? smile.gif

Цитата(DRUID3 @ Sep 6 2009, 00:55) *
Пытаетесь сострить smile.gif ?


Ну хорошо, расскажите нам тогда в каком месте по-вашему я наступил на горло Котельникову или же Найквисту, чтобы они вертелись в гробах?
GetSmart
Цитата(DMax @ Sep 6 2009, 14:47) *
Вы математик? smile.gif

Не, я простой гений smile.gif

Это всего лишь вершина треугольника обрезанная под углом. Взгляните на бОльшее кол-во точек около этой вершины и без даже очков будет очевидно, что это треугольник smile.gif И анализировать его надо как треугольник, а не как трапецию.

А про Котельникова не переживайте. Его ТК здесь никаким боком не требуется.
petrov
Цитата(DMax @ Sep 6 2009, 12:37) *
эталонную последовательность удлинял в два раза путём дублирования эталонных отсчетов


Надо не дублировать, эталонная последовательность должна быть так же сглажена как и последовательность в передатчике, в чём проблема сделать согласованный фильтр в 2 отсчёта на символ, импульсная характеристика которого в точности повторяет импульс передатчика?
sup-sup
Скорее всего, если полученный результат с выхода коррелятора проинтерполировать, то и точность на столько и повысится, если шум ее не сдвинет, но это должен быть максимальновозможный результат. А все другие штучки - это упрощение честной интерполяции.
bahurin
Цитата(DMax @ Sep 4 2009, 23:25) *
Доброго времени суток всем!

Есть такая проблема: надо определить момент прихода сигнала с точностью выше, чем интервал сэплирования. Сигнал - заранее известная последовательность с хорошими корреляционными свойствами.


В навигации это классическая задача. Если корреляционный пик треугольный, то вычисляют текущую корреляционный пик, опережающий на полсивола ПСП и запаздывающий на полсимвола ПСП и далее добиваются равентсва опережающего и запаздывающего корреляционных пиков следящим контуром. См. Харрисов Перов Спутниковая навигационная система Глонасс.
Alex65111
Цитата(petrov @ Sep 6 2009, 12:57) *
в чём проблема сделать согласованный фильтр в 2 отсчёта на символ, импульсная характеристика которого в точности повторяет импульс передатчика?


А на самом деле как? Обычно при расчете фильтра его порядки получаются далеко не 2 отсчета?
des00
Цитата(Alex65111 @ Sep 6 2009, 12:49) *
А на самом деле как? Обычно при расчете фильтра его порядки получаются далеко не 2 отсчета?


как я понял имелось ввиду расположение приемного фильтра в тактовом домене 2 отсчета на символ.
Alex65111
Цитата(des00 @ Sep 7 2009, 07:14) *
как я понял имелось ввиду расположение приемного фильтра в тактовом домене 2 отсчета на символ.


Более наглядно можно?
alex_os
Цитата(GetSmart @ Sep 6 2009, 12:25) *
Можно я тут сумничаю? smile.gif

Надо сделать ещё одну "кореляцию" кореляционной функции с треугольником. Шумы могут исказить вершину треугольника и тогда три верхних точки будут врать. Поэтому нужно использовать в расчётах как можно больше точек в окресности вершины, принадлежащих треугольнику. Короче, алгоритм должен "спозиционировать" опорный треугольник на функции кореляции так, чтобы был минимум квадратов отклонений. При этом все шумы (неровности на треугольнике) сгладятся и не повлияют на точность. В простом виде такой алгоритм заключается в нахождении двух линий - сторон треугольника слева и справа от вершины, и уже точку пересечения линий можно посчитать с высокой точностью, гораздо выше одного сэмпла.


Это не правильно, оптимальная оценка получается именно нахождением максимума коррелятора, это будет максимально правдоподобная оценка. Никакая дополнительная фильтрация и "корреляция корреляции" не нужна.


Цитата(DMax @ Sep 6 2009, 12:37) *
Она имеет вид треугольника в том случае, когда частота дискретизации совпадает с частотой манипулирования фазой. Попробуйте увеличить частоту дискретизации скажем раз в 10 и вы увидите, что (в зависимости от того как ляжет такт оцифровки) пик согласованного фильтра у вас расползется на 9-10 точек примерно одного уровня.


Если считать корреляцию в непрерывном времени, то для фазовой модуляции с мгновенными скачками фазы будет треугольник. В дискретном времени должен наблюдаться дискретизированный треугольник.
p.s. Вообще два отсчета на символ для "прямоугольно-треугольного" случая, наверное маловато будет ( тут вспоминается тов. Котельников smile.gif)

Нажмите для просмотра прикрепленного файла
Код
x = zeros(1000,1);
for i=1:10:1000
    if(randn()>0)     x(i:i+9) = 1;
    else        x(i:i+9) = -1;    end
end
y=xcorr(x,x+1*randn(1000,1));
plot(y(950:1050))
DMax
Цитата(petrov @ Sep 6 2009, 12:57) *
Надо не дублировать, эталонная последовательность должна быть так же сглажена как и последовательность в передатчике, в чём проблема сделать согласованный фильтр в 2 отсчёта на символ, импульсная характеристика которого в точности повторяет импульс передатчика?


Мне уже приходила в голову такая мысль. Но как узнать импульс передатчика? С какой точностью он должен быть измерен? Я просто понятия не имею про аналоговую часть передачтика.
GetSmart
Цитата(alex_os @ Sep 7 2009, 11:17) *
Это не правильно, оптимальная оценка получается именно нахождением максимума коррелятора, это будет максимально правдоподобная оценка. Никакая дополнительная фильтрация и "корреляция корреляции" не нужна.

Моя версия ближе к истине чем у других. Я навёл справки у ребят, которые занимались аналогичной задачей. Только они находили период (то есть расстояние между пиками кор.функции) сложного сигнала методом кореляции с точностью намного выше одного сэмпла. В присутствии больших шумов вершина треугольника становится размазанной. От этого не избавиться никакой разумной фильтрацией. Алгоритм точного нахождения вершины заключается в следующем. Когда вершина размазана, как ни странно, но стороны треугольника на их средних уровнях очень прямые. Так вот требуется найти две точки на одинаковых (допустим правых) сторонах треугольника на одном горизонтальном уровне (примерно посередине высоты треугольника) и по этим точкам вычислить расстояние между ними для определения точного периода. Разумеется, две точки не будут иметь одинаковый уровень, поэтому одну из точек нужно будет интерполировать до соседней, при этом как раз позиция по Х второй точки на втором треугольнике будет дробной. Так вот, расстояние между точками (X2-X1) будет точным периодом.

Применительно к этой поставленной задаче - нужно искать не пик корреляции, там неверное значение.
alex_os
Цитата(DMax @ Sep 7 2009, 12:31) *
Мне уже приходила в голову такая мысль. Но как узнать импульс передатчика? С какой точностью он должен быть измерен? Я просто понятия не имею про аналоговую часть передачтика.


Спектр сигнала можете измерить? Если да, сделайте коротенький sqrt raised cosine фильтр с похожим ачх,
коэффициент скругления(rolloff) подбирать чтобы было примерно похоже. Matlab fdatool Вам поможет. Особая точность не нужна.
petrov
Цитата(DMax @ Sep 7 2009, 12:31) *
Мне уже приходила в голову такая мысль. Но как узнать импульс передатчика? С какой точностью он должен быть измерен? Я просто понятия не имею про аналоговую часть передачтика.


Ну чтобы согласованный фильтр сделать надо знать как символы сглажены, не делать же на приёме прямоугольные, у них спектр широкий будете всякие помехи ловить по соседним каналам, в принципе можно примерно подобрать по ширине спектра какой нибудь корень из-приподнятого с достаточным подавлением по соседнему каналу.


Цитата(GetSmart @ Sep 7 2009, 13:08) *
Моя версия ближе к истине чем у других. Я навёл справки у ребят, которые занимались аналогичной задачей. Только они находили период (то есть расстояние между пиками кор.функции) сложного сигнала методом кореляции с точностью намного выше одного сэмпла. В присутствии больших шумов вершина треугольника становится размазанной. От этого не избавиться никакой разумной фильтрацией. Алгоритм точного нахождения вершины заключается в следующем. Когда вершина размазана, как ни странно, но стороны треугольника на их средних уровнях очень прямые. Так вот требуется найти две точки на одинаковых (допустим правых) сторонах треугольника на одном горизонтальном уровне (примерно посередине высоты треугольника) и по этим точкам вычислить расстояние между ними для определения точного периода. Разумеется, две точки не будут иметь одинаковый уровень, поэтому одну из точек нужно будет интерполировать до соседней, при этом как раз позиция по Х второй точки на втором треугольнике будет дробной. Так вот, расстояние между точками (X2-X1) будет точным периодом.

Применительно к этой поставленной задаче - нужно искать не пик корреляции, там неверное значение.


Писали вам уже что неправильно это, если мксимум размазан то и не определить его точно никакими ухищрениями в принципе.
GetSmart
Цитата(petrov @ Sep 7 2009, 15:21) *
Писали вам уже что неправильно это, если мксимум размазан то и не определить его точно никакими ухищрениями в принципе.

В том то и фишка, что определить. Люди тестировали свои алгоритмы на промышленном оборудовании. Я же не просто так рассказал.

Единственное отличие в том, что здесь у автора всего одна искомая последовательность в сигнале и не найти расстояние между двумя правыми сторонами двух треугольников.
alex_os
Цитата(GetSmart @ Sep 7 2009, 13:08) *
Моя версия ближе к истине чем у других. Я навёл справки у ребят, которые занимались аналогичной задачей. Только они находили период (то есть расстояние между пиками кор.функции) сложного сигнала методом кореляции с точностью намного выше одного сэмпла. В присутствии больших шумов вершина треугольника становится размазанной. От этого не избавиться никакой разумной фильтрацией. Алгоритм точного нахождения вершины заключается в следующем. Когда вершина размазана, как ни странно, но стороны треугольника на их средних уровнях очень прямые. Так вот требуется найти две точки на одинаковых (допустим правых) сторонах треугольника на одном горизонтальном уровне (примерно посередине высоты треугольника) и по этим точкам вычислить расстояние между ними для определения точного периода. Разумеется, две точки не будут иметь одинаковый уровень, поэтому одну из точек нужно будет интерполировать до соседней, при этом как раз позиция по Х второй точки на втором треугольнике будет дробной. Так вот, расстояние между точками (X2-X1) будет точным периодом.

Так крутые фронты дрожат не меньше чем вершина. Просто чисто технически удобнее находить превышение некоего порога чем максимум, да интерполяция (т.е. определение периода с точностью до долей периода дискретизации) по фронтам треугольного импульса проще получается...
petrov
Цитата(GetSmart @ Sep 7 2009, 13:33) *
В том то и фишка, что определить. Люди тестировали свои алгоритмы на промышленном оборудовании. Я же не просто так рассказал.


Почитайте книжки по радиолокации, максимум на выходе согласованного фильтра это и есть самый луший обнаружитель, лучше в принципе сделать невозможно что бы там ребята не говорили.
alex_os
Цитата(GetSmart @ Sep 7 2009, 13:33) *
В том то и фишка, что определить. Люди тестировали свои алгоритмы на промышленном оборудовании. Я же не просто так рассказал.

Единственное отличие в том, что здесь у автора всего одна искомая последовательность в сигнале и не найти расстояние между двумя правыми сторонами двух треугольников.

Дык, ни кто не говорит что это не работает, просто это не есть оптимальная оценка. Кстати у треугольника есть еще левая сторона smile.gif, можно находить время пересечения порога с левой стороной и момент пересечения с правой и усреднять.
GetSmart
Цитата(alex_os @ Sep 7 2009, 15:35) *
Так крутые фронты дрожат не меньше чем вершина.

Это по-вашему, гипотетически. Ну а практически - реально меньше.

Цитата(petrov)
Почитайте книжки по радиолокации, максимум на выходе согласованного фильтра это и есть самый луший обнаружитель, лучше в принципе сделать невозможно что бы там ребята не говорили.

Может оказаться так, что реализация подходящего согласованного фильтра будет черезмерно сложной (если не гипотетической), по сравнению с предложенным мной алгоритмом. Я говорю о том, что информация о пике/максимуме находится не только на вершине, но и на склонах треугольника. И просто взглянув на график кор.функции очень зашумлённого сигнала можно будет понять откуда проще и точнее вытащить информацию о максимуме.

Цитата(alex_os @ Sep 7 2009, 15:48) *
Кстати у треугольника есть еще левая сторона smile.gif, можно находить время пересечения порога с левой стороной и момент пересечения с правой и усреднять.

Только у этого треугольника может быть ещё наклон, который всё подпортит smile.gif Но пораскинув мозгами можно и эту проблему решить.
fontp
По первой части вопроса, есть теоретически достижимая оценка максимального правдоподобия
Крамера-Рао
http://www.cplire.ru/joined/mac/lection5/text.html
http://www.ndt.net/article/ultragarsas/63-...%20Dumbrava.pdf

Грубо говоря стандартное отклонение позиционирования во времени не может быть для одиночного импульса лучше чем
T / sqrt(SNR), T - продолжительность импульса, SNR - сигнал/шум
Для псевдослучайной последовательности длиной N должно получиться что-то ~ T/sqrt(N*SNR)

Поищите Крамера-Рао или CRLB в Гугле. Это в экзаменах есть ))
alex_os
Цитата(GetSmart @ Sep 7 2009, 13:53) *
Это по-вашему, гипотетически. Ну а практически - реально меньше.

Практическое подтверждение smile.gif.

Девиация положения максимума
std_max = 0.1613
Девиация положения точки пересечения порога 0.5
std_edge = 2.5813
Так что природу не обманешь...


Код
x = zeros(1000,1);
x = zeros(1000,1);

for i=1:10:1000
    if(randn(1,1)>0)     x(i:i+9) = 1;
    else        x(i:i+9) = -1;    end
end

pos_max  = zeros(1,1000);
pos_edge = zeros(1,1000);
plot(y);

for j=1:1000
        y=xcorr(x,x+3*randn(1000,1));        
        [v, m] = max(y);
        I=find(y>500);
        pos_max(j)  = m;
        pos_edge(j) = I(1);
end        

std_max  = std(pos_max)
std_edge = std(pos_edge)
fontp
Цитата(alex_os @ Sep 7 2009, 14:30) *
Практическое подтверждение smile.gif.

Девиация положения максимума
std_max = 0.1613
Девиация положения точки пересечения порога 0.5
std_edge = 2.5813
Так что природу не обманешь...


Зависит от того как сформированы импульсы. Есть приложения, где корреляционная функция треугольная или даже может и трапеция и применяют геометрический первый момент (центр масс) функции корреляции импульса или даже медиану (вес справа = весу слева), как самое устойчивое решение - для выявления максимума. Почему обязательно уровень пересечения 0.5? Есть разные способы максимум искать и все они правильные, и не всегда подогнать параболу лучший ))
GetSmart
Цитата(petrov @ Sep 7 2009, 15:45) *
максимум на выходе согласованного фильтра это и есть самый луший обнаружитель

А шо за фильтр, который умеет фильтровать треугольники? Все фильтры предназначены для синусов. А треугольники - это уже из области геометрии.
fontp
Цитата(GetSmart @ Sep 7 2009, 15:48) *
А шо за фильтр, который умеет фильтровать треугольники? Все фильтры предназначены для синусов. А треугольники - это уже из области геометрии.


Так всякий сигнал обычно формируется в передатчике посредством фильтрации.
И в модемах и в радиолокаторах. Вот о чём речь. В функции корреляции выходит скругление.

Треугольник - это результат корреляции двух идеально прямоугольных импульсов. Идеально прямоугольные импульсы бывают только в идеальных устройствах, например в мозге )) Ultra Wide Band
GetSmart
Цитата(fontp @ Sep 7 2009, 17:52) *
Так всякий сигнал обычно формируется в передатчике посредством фильтрации.
И в модемах и в радиолокаторах. Вот о чём речь. В функции корреляции выходит скругление.

Я так понял, что petrov предлагал фильтровать результат корреляции чтобы на отфильтрованном результате проще/качественней найти пик. Но синусоидальный фильтр не предназначен для этого. Кроме того, фильтр должен иметь частоту среза соизмеримую с длительностью опорного сигнала. При этом треугольник реально исказится, т.к. к нему применили "недопустимую операцию" biggrin.gif
thermit
Цитата
GetSmart:
Все фильтры предназначены для синусов


Отакот век живи - век учись...
petrov
Цитата(GetSmart @ Sep 7 2009, 16:01) *
Я так понял, что petrov предлагал фильтровать результат кореляции чтобы на отфильтрованном результате проще/качественней найти пик. Но синусоидальный фильтр не предназначен для этого.


Ничего такого я не предлагал. Имеете понятие о согласованной фильтрации? На выходе согласованного фильтра для вашей последовательности псевдослучайной ищете максимум, всё.
DRUID3
Цитата(DMax @ Sep 6 2009, 11:47) *
Ну хорошо, расскажите нам тогда в каком месте по-вашему я наступил на горло Котельникову или же Найквисту, чтобы они вертелись в гробах?

ОК. Если призадумаетесь, то теорема Котельникова/Найквиста устанавливает ограничение на скорость изменения функции относительно количества отсчетов на определенном интервале... Частотный критерий - это дух той эпохи - гармонический подход ко всякого рода явлениям. Надеюсь Вы понимаете, что никаких частот(частостей, вейвлетов, чирплетов, разложений по Тейлору и т.д) "внутри" сигнала нет. Вот именно поэтому то и работает стробоскопический осциллограф и оцифровка радиосигнала 1.0..1.1 GHz с частотой 200 MHz.

Далее Вы сами же приходите к противоречию. К стационарному сигналу Вы подмешиваете априори неизвестный сигнал (в виде шума) получая при этом непредсказуемую скорость изменения и задаете вопрос следующего плана:
"ребята сколько будет 2+Y если раньше было 18, а еще раньше -7".

Так вот это Y Вы можете только прогнозировать но никак не знать заранее. У шума есть 2-е характеристики - мощность на интервале и функция распределения(количество тех или иных значений отсчетов) на интервале - и никакая статистика Вам не скажет чему равен такой-то по-порядку отсчет - иначе это уже не шум будет.

Далее вообще супер... Поздравляю, Вы - на грани открытия(чур я соаФФтАр wink.gif ):

Установка которой Вы пытаетесь "угадать" момент прихода радиоимпульса является отличнейшим прибором для изучения статистических свойств тех или иных шумов/помех. Эдакий "идеологический туннельный микроскоп" biggrin.gif - задаете правило аппроксимации/предсказания - и на довольно длительном интервале собираете статистику имея однозначный параметр - коэффициент корреляции. Так практически можно "снять"(как ВАХ для лампы, транзистора или полевика) любую статистистическую функцию распределения. Кажется, а зачем можно и непосредственно подсчитать? Но Вашим способом удобно делать быстрые шаблонные тесты - выдвинули гипотезу, ага пошло разбегание, новая гипотеза т т.д. smile.gif


Цитата(fontp @ Sep 7 2009, 13:13) *
По первой части вопроса, есть теоретически достижимая оценка максимального правдоподобия
Крамера-Рао
http://www.cplire.ru/joined/mac/lection5/text.html
http://www.ndt.net/article/ultragarsas/63-...%20Dumbrava.pdf

Грубо говоря стандартное отклонение позиционирования во времени не может быть для одиночного импульса лучше чем
T / sqrt(SNR)
, T - продолжительность импульса, SNR - сигнал/шум
Для псевдослучайной последовательности длиной N должно получиться что-то ~ T/sqrt(N*SNR)

Поищите Крамера-Рао или CRLB в Гугле. Это в экзаменах есть ))

Цитата(fontp @ Sep 7 2009, 13:42) *
Зависит от того как сформированы импульсы. Есть приложения, где корреляционная функция треугольная или даже может и трапеция и применяют геометрический первый момент (центр масс) функции корреляции импульса или даже медиану (вес справа = весу слева), как самое устойчивое решение - для выявления максимума. Почему обязательно уровень пересечения 0.5? Есть разные способы максимум искать и все они правильные, и не всегда подогнать параболу лучший ))

Позволил себе добавить эти цитаты как под другим углом раскрывающие мою позицию.

Цитата(GetSmart @ Sep 6 2009, 11:54) *
А про Котельникова не переживайте. Его ТК здесь никаким боком не требуется.

biggrin.gif Ай-яй-яй. Такой большой, а обманывает младших!


Цитата(GetSmart @ Sep 6 2009, 11:54) *
Не, я простой гений smile.gif

+
Цитата(GetSmart @ Sep 7 2009, 14:48) *
А шо за фильтр, который умеет фильтровать треугольники? Все фильтры предназначены для синусов. А треугольники - это уже из области геометрии.

А продижи местного разлива часом не выступал научным консультантом в проекте "Булава"? smile.gif

P.S.: Еще в гробу крутится и Шенон. Полоса+соотношение шума и сигнала - вероятность достоверного приема - это все к нему wink.gif ...
GetSmart
Цитата(DRUID3 @ Sep 7 2009, 19:39) *
Частотный критерий - это дух той эпохи - гармонический подход ко всякого рода явлениям. Надеюсь Вы понимаете, что никаких частот(частостей, вейвлетов, чирплетов, разложений по Тейлору и т.д) "внутри" сигнала нет.
Во-первых, корреляция не раскладывает сигнал на спектры, поэтому как я и сказал - проблем с ТК нет.

Цитата
Так вот это Y Вы можете только прогнозировать но никак не знать заранее. У шума есть 2-е характеристики - мощность на интервале и функция распределения(количество тех или иных значений отсчетов) на интервале - и никакая статистика Вам не скажет чему равен такой-то по-порядку отсчет - иначе это уже не шум будет.

По-вашему существование "шумоподавителей" можно считать мистикой.
---
Во-вторых, шумы имеют свойства, отличные от полезных сигналов и их можно отделять от оных. Кроме того, есстественные шумы имеют реально ограниченную амплитуду.


По-поводу корреляции. Жаль, что ширина её завязана на ширину опорной последовательности, т.к при увеличении ширины интеграла уровень шумов в результате всегда пропорционально падает. Допустим, что шумы распределяются одинаково на треугольнике кор.функции (я сам не проверял). чтобы сгладить эти шумы вполне естественно взять как можно больше точек в окресностях пика треугольника. На двух или трёх точках разброс будет куда больший.
thermit
Цитата
GetSmart:
Во-первых, корреляция не раскладывает сигнал на спектры, поэтому как я и сказал - проблем с ТК нет.


Ы-ы-ы-ы-ы...
А как же широко известная в узких кругах теорема винера нашего, хинчина?
GetSmart
Это как в том анекдоте - "во, валит!..." :-)))
DRUID3
Цитата(GetSmart @ Sep 7 2009, 17:17) *
Во-первых, корреляция не раскладывает сигнал на спектры, поэтому как я и сказал - проблем с ТК нет.

Повторяю специально для местных гениев. Спектры действительно нипричем. А вот скорость изменения относительно количества взятых отсчетов - очень даже причем. И эту скорость можно измерять частотным критеием biggrin.gif о чем и писали Найквист/Котельников ...гы... Так вот подмешивая случайным образом дополнительные веса для каждого отсчета мы как бы размазываем детерминированную картинку нашего стробоскопического осциллографа намного быстрее изменяющейся функцией шума. И все, уже ничего точно между отсчетов мы никогда не зафиксируем. Остается применить некий статистический фильтр, который из определенного количества измерений будет давать тот или иной процент адекватный в некотором диапазоне значений... Преднамеренно получить единичное точное значение - исключено.

Цитата(GetSmart @ Sep 7 2009, 17:17) *
По-вашему существование "шумоподавителей" можно считать мистикой.

По-моему мистикой можно считать существование универсальных и 100%-ных шумоподавителей, предсказателей, прогнозов погоды и т.д smile.gif Тем лучше будет изучена/предсказана природа помехи, тем лучше ее подавят. Все эти методы предсказателей/интерполяций предлагаемые автору так или иначе хорошо себя зарекомендовали при определенных условиях...

Цитата(GetSmart @ Sep 7 2009, 17:17) *
Во-вторых, шумы имеют свойства, отличные от полезных сигналов и их можно отделять от оных. Кроме того, есстественные шумы имеют реально ограниченную амплитуду.

Ага... вот и я про то...
GetSmart
Цитата(DRUID3 @ Sep 7 2009, 21:22) *
А вот скорость изменения относительно количества взятых отсчетов - очень даже причем. И эту скорость можно измерять частотным критеием biggrin.gif о чем и писали Найквист/Котельников ...гы... Так вот подмешивая случайным образом дополнительные веса для каждого отсчета мы как бы размазываем детерминированную картинку нашего стробоскопического осциллографа намного быстрее изменяющейся функцией шума. И все, уже ничего точно между отсчетов мы никогда не зафиксируем. Остается применить некий статистический фильтр, который из определенного количества измерений будет давать тот или иной процент адекватный в некотором диапазоне значений... Преднамеренно получить единичное точное значение - исключено.

Котельников/Найквист писали, что в дискретном сигнале есть ортогональные частоты. И о том, что сигнал можно полностью восстановить если он сверху ограничен по частоте равной половине дискретизации (пусть чуть меньше). Со вторым я никогда не спорил. А первое тут нипричём. Шум мы не подмешиваем, он уже подмешан "природой". Перед оцифровкой сигнал ессно отфильтрован по критерию Котельникова. Остальные промежуточные точки сигнала вместе с шумом находятся фильтрацией, причём идеально. Какие проблемы?!
Тут проблема только в том, что сам шум даёт корреляцию с сигналом, тем самым искажая треугольник.
DMax
Цитата(DRUID3 @ Sep 7 2009, 17:39) *
ОК. Если призадумаетесь, то теорема Котельникова/Найквиста устанавливает ограничение на скорость изменения функции относительно количества отсчетов на определенном интервале... Частотный критерий - это дух той эпохи - гармонический подход ко всякого рода явлениям. Надеюсь Вы понимаете, что никаких частот(частостей, вейвлетов, чирплетов, разложений по Тейлору и т.д) "внутри" сигнала нет. Вот именно поэтому то и работает стробоскопический осциллограф и оцифровка радиосигнала 1.0..1.1 GHz с частотой 200 MHz.


Ёп!!! А мужики-то не знают! Лепят уже по второму десятку лет гетеродины и прочую аналоговую лабуду... побегу им ща рассказывать.

Цитата(DRUID3 @ Sep 7 2009, 17:39) *
Далее Вы сами же приходите к противоречию. К стационарному сигналу Вы подмешиваете априори неизвестный сигнал (в виде шума) получая при этом непредсказуемую скорость изменения и задаете вопрос следующего плана:
"ребята сколько будет 2+Y если раньше было 18, а еще раньше -7".

Так вот это Y Вы можете только прогнозировать но никак не знать заранее. У шума есть 2-е характеристики - мощность на интервале и функция распределения(количество тех или иных значений отсчетов) на интервале - и никакая статистика Вам не скажет чему равен такой-то по-порядку отсчет - иначе это уже не шум будет.

Далее вообще супер... Поздравляю, Вы - на грани открытия(чур я соаФФтАр wink.gif ):

Установка которой Вы пытаетесь "угадать" момент прихода радиоимпульса является отличнейшим прибором для изучения статистических свойств тех или иных шумов/помех. Эдакий "идеологический туннельный микроскоп" biggrin.gif - задаете правило аппроксимации/предсказания - и на довольно длительном интервале собираете статистику имея однозначный параметр - коэффициент корреляции. Так практически можно "снять"(как ВАХ для лампы, транзистора или полевика) любую статистистическую функцию распределения. Кажется, а зачем можно и непосредственно подсчитать? Но Вашим способом удобно делать быстрые шаблонные тесты - выдвинули гипотезу, ага пошло разбегание, новая гипотеза т т.д. smile.gif


Сколько слов, но нет банального ответа на первоначально заданный вопрос: "В каком месте, по-вашему, я наступил на горло Котельникову и/или же Найквисту, чтобы они вертелись в гробах?". Пока пахнет демагогией.
bahurin
Думаю, что если шум аддитивный с нулевым среднем, то можно получить любую точность оценки временного положения корреляционного пика если частота дискретизации была выбрана по Найквисту. Все упирается в возможную длительность наблюдения. При бесконечном наблюдении можно получить истинную оценку времени задержки.
sup-sup
Цитата(DMax @ Sep 4 2009, 22:25) *
Доброго времени суток всем!

Есть такая проблема: надо определить момент прихода сигнала с точностью выше, чем интервал сэплирования. Сигнал - заранее известная последовательность с хорошими корреляционными свойствами. Собственно для решения данной задачи я придумал следующий алгоритм.
1) Простым согласованным фильтром обнаруживаем то место в оцифрованном сигнале на удвоенной частоте, где пик достигает максимального значения.
2) Далее, берем и делаем БПФ на принятую последовательность и БПФ на эталонную последовательность и вычитаем из фаз первого преобразования соответствующие фазы второго.
3) Согласно теореме о задержке, если принятый сигнал был оцифрован точно в момент его начала, то все разности фаз будут иметь одинаковое значение. В противном случае если построить график phi(i), то он будет иметь вид наклоненной прямой и угол наклона определяет величину задержки прихода сигнала относительно первого сэмпла. Далее, применяя несложные формулы, я эту задержку и вычисляю.

Но тут не всё так хорошо как хотелось бы. Во-первых, начиная с какого-то соотношения сигнал-шум, наблюдается такая картина: коррелятор без проблем обнаружает эту последовательность (например, чёткий пик с корреляцией 0.5), но этот алгоритм уже выдает точно не правильные решения. Вопрос, как оценить то соотношение сигнал-шум, при котором данный алгоритм будет выдавать эту задержку хотя бы с точность в пол отсчета? Или в более общем виде, как оценить SNR, при котором точность будет заданной или выше?

Второй вопрос: может быть есть более продвинутые спобособы решения данной задачи? Ткните мордой в документацию, плиз.


При более внимательном прочтении обнаруживаются вопросы. Что значит, "на удвоенной частоте"? Это что, сигнал - пачка синуса? Тогда почему у него хорошие корреляционные свойства? Обыкновенный треугольник. И еще, удвоенная частота - это мы попадаем на частоту Найквиста? А она не берется ведь. Что-то тут не так. Дайте публике сигнал и шаблон, а мы ими поиграемся.
DMax
Цитата(sup-sup @ Sep 7 2009, 22:41) *
При более внимательном прочтении обнаруживаются вопросы. Что значит, "на удвоенной частоте"? Это что, сигнал - пачка синуса? Тогда почему у него хорошие корреляционные свойства? Обыкновенный треугольник. И еще, удвоенная частота - это мы попадаем на частоту Найквиста? А она не берется ведь. Что-то тут не так. Дайте публике сигнал и шаблон, а мы ими поиграемся.


Прошу прощения если я не понятно выразился. Имеется ввиду, что есть сигнал с фазовой модуляцией, в котором символная скорость N бод. Мы его дискретизируем с частотой 2*N. Хорошие коррялционные свойства у него потому, что это M-последовательность. Конкретный случай здесь не имеет значения, поэтому приводить здесь всякие шаблоны не буду.

Цитата(petrov @ Sep 6 2009, 12:57) *
Надо не дублировать, эталонная последовательность должна быть так же сглажена как и последовательность в передатчике, в чём проблема сделать согласованный фильтр в 2 отсчёта на символ, импульсная характеристика которого в точности повторяет импульс передатчика?


У меня вопрос. Допустим я сделал такой цифровой фильтр, ИХ которого совпадает с ИХ передатчика. Теперь я хочу пропустить через него свою эталонную псевдослучайную последовательность, чтобы получить сглаженую. Как это правильно сделать? Ведь ежели я засуну её в фильтр проинициализированный нулями, то первые N отсчетов (где N - кол-во отводов) - это переходный процесс. То же самое и с последними N - отсчетами. Или вообще это надо делать в частотной области, а потом обратное ДПФ делать?
alex_os
Цитата(DMax @ Sep 8 2009, 11:19) *
У меня вопрос. Допустим я сделал такой цифровой фильтр, ИХ которого совпадает с ИХ передатчика. Теперь я хочу пропустить через него свою эталонную псевдослучайную последовательность, чтобы получить сглаженую. Как это правильно сделать? Ведь ежели я засуну её в фильтр проинициализированный нулями, то первые N отсчетов (где N - кол-во отводов) - это переходный процесс. То же самое и с последними N - отсчетами. Или вообще это надо делать в частотной области, а потом обратное ДПФ делать?

Ну что что переходной процесс? Фильтр длинной несколько символов, сама псевдослучайная последовательность много длиннее. Хотите используйте в качестве опоры фильтрованный сигнал с переходными процессами, хотите отрежте их. Разница наверняка будет не заметна.
petrov
Цитата(DMax @ Sep 8 2009, 11:19) *
У меня вопрос. Допустим я сделал такой цифровой фильтр, ИХ которого совпадает с ИХ передатчика. Теперь я хочу пропустить через него свою эталонную псевдослучайную последовательность, чтобы получить сглаженую. Как это правильно сделать? Ведь ежели я засуну её в фильтр проинициализированный нулями, то первые N отсчетов (где N - кол-во отводов) - это переходный процесс. То же самое и с последними N - отсчетами. Или вообще это надо делать в частотной области, а потом обратное ДПФ делать?


Никаких частотных областей не нужно. Пусть мы хотим обнаружить импульс представляющий собой BPSK сигнал модулировынный псевдослучайной последовательностью, каждый символ сглажен фильтром с импульсной характеристикой корень из приподнятого косинуса. На приёмной стороне дискретизируем с частотой 2 отсчёта на символ. Делаем согласованный фильтр на весь импульс. Сначала линия задержки с отводами(комплексная ессно, обрабатываем сигнал на нулевой частоте), отводы идут через каждые две задержки, умножаем отводы на +-1 в сотответствии со знаками нашей псевдослучайной последовательности и суммируем. Затем на выходе этого фильтра повышаем частоту дискретизации ну скажем в 3 раза добавлением нулей и подаём на фильтр корень из приподнятого косинуса согласованный со сглаживающим фильтром передатчика, разумеется всё это делаем в виде полифазного фильтра чтобы не работать не работать на повышенной частоте и не делать лишних операций умножения на ноль. Далее берём модуль комплексного числа, потом пороговое устройство(АРУ ессно должно быть), при превышении порога ищем максимум на выходе полифазного фильтра, таким образом определяем время прихода с точностью до 6-ти отсчётов на символ, если сигнал/шум позволяет определять время прихода точнее, то через максимальный и 2 ближайших соседних отсчёта проводим параболу и находим её максимум.
samurad
Цитата(bahurin @ Sep 7 2009, 20:16) *
Думаю, что если шум аддитивный с нулевым среднем, то можно получить любую точность оценки временного положения корреляционного пика если частота дискретизации была выбрана по Найквисту. Все упирается в возможную длительность наблюдения. При бесконечном наблюдении можно получить истинную оценку времени задержки.

Я бы уточнил: при максимально длительном усреднении корреляционной функции (главный пик) принятого периодического стационарного сигнала, шум на выходе коррелятора будет минимальным, и, соответственно, максимальной будет точность определения задержки пика. Для динамически изменяемого сигнала, которые часто на практике имеют место быть, скорость принятия решений схемой слежения должна превышать скорость изменения параметров сигнала. Разумеется, сигнал должен повторяться достаточное число раз, т.е. быть "бесконечно-периодическим" на всем промежутке измерения.

Это теория, а на практике все рассогласования, будь то тривиальное несоблюдение теоремы Котельникова (которое может быть намеренным), незнание точной фильтрационной характеристикм на выходе передатчика, незнание канала и пр. (о чем умалчивает данное задание), будут в общем случае увеличивать ошибку измерения, т.к. используемый в корреляторе эталонный (местный) сигнал будет отличаться от принятого, искажая истинную корреляционную функцию. Это уже было подмечено выше, а я обращаю внимание, что оценка того, что неизвестно требует дополнительных аппаратных затрат (поэтому так догоро стоят самые точные геодезические приемники), однако критерий таких затрат в данной задании не указан, что не позволяет его оптимально решить.

Далее, если интересует не абсолютная оценка времени прихода сигнала, которая требует привязку к абсолютному времени со всеми вытекающими, а относительная, напр., по сравнению с моментом времени первого отчета (решения), то принципиально большую точность (многократно) даст интерферометрия, т.е. измерение разности фаз несущей, а не огибающей. К тому же, такие измерения даже на несложной PLL 2-ого порядка будут "шуметь" много меньше из-за возможности выбрать очень узкую полосу PLL-фильтра (несколько Гц). Естественно, опорный генератор должен быть достаточно стабильным, что впрочем требуется в большей или меньшей степени при любом методе измерения.

Есть несколько дополнительных мелких хитростей в навигационных приемниках на этот счет. Напр., указанная в предыдущих постах интерполяция корр. функции, но она "работает" только при больших выходных сигнал/шум. Еще подбирают частоту дискретизации немного отличной от ближайшей кратной частоте следования импульсов принятого сигнала или "играют" расстройкой генератора в смесителе. Тогда момент взятия отчета какого-л. фиксированного импульса из периода последовательности "плывет" с шагом много меньше шага дискретизации, пока не достигнет следующего импульса, а вместе с ним "пульсирует" сигнал/шум на выходе коррелятора, проходя через свой пик, который можно измерить довольно стандартным способом. Иначе его практически не "видно". Это, как я помню, описано в некоторых книжках по радионавигации.

Ну и БПФ я бы не стал использовать, по крайней мере на этапе слежения, из-за дополнительного сглаживания (округления) корр. функции.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.