|
Уточнение момента прихода сигнала |
|
|
|
Sep 4 2009, 19:25
|
Частый гость
 
Группа: Свой
Сообщений: 161
Регистрация: 19-01-08
Из: Питер
Пользователь №: 34 234

|
Доброго времени суток всем!
Есть такая проблема: надо определить момент прихода сигнала с точностью выше, чем интервал сэплирования. Сигнал - заранее известная последовательность с хорошими корреляционными свойствами. Собственно для решения данной задачи я придумал следующий алгоритм. 1) Простым согласованным фильтром обнаруживаем то место в оцифрованном сигнале на удвоенной частоте, где пик достигает максимального значения. 2) Далее, берем и делаем БПФ на принятую последовательность и БПФ на эталонную последовательность и вычитаем из фаз первого преобразования соответствующие фазы второго. 3) Согласно теореме о задержке, если принятый сигнал был оцифрован точно в момент его начала, то все разности фаз будут иметь одинаковое значение. В противном случае если построить график phi(i), то он будет иметь вид наклоненной прямой и угол наклона определяет величину задержки прихода сигнала относительно первого сэмпла. Далее, применяя несложные формулы, я эту задержку и вычисляю.
Но тут не всё так хорошо как хотелось бы. Во-первых, начиная с какого-то соотношения сигнал-шум, наблюдается такая картина: коррелятор без проблем обнаружает эту последовательность (например, чёткий пик с корреляцией 0.5), но этот алгоритм уже выдает точно не правильные решения. Вопрос, как оценить то соотношение сигнал-шум, при котором данный алгоритм будет выдавать эту задержку хотя бы с точность в пол отсчета? Или в более общем виде, как оценить SNR, при котором точность будет заданной или выше?
Второй вопрос: может быть есть более продвинутые спобособы решения данной задачи? Ткните мордой в документацию, плиз.
|
|
|
|
|
 |
Ответов
|
Sep 7 2009, 05:17
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(GetSmart @ Sep 6 2009, 12:25)  Можно я тут сумничаю?  Надо сделать ещё одну "кореляцию" кореляционной функции с треугольником. Шумы могут исказить вершину треугольника и тогда три верхних точки будут врать. Поэтому нужно использовать в расчётах как можно больше точек в окресности вершины, принадлежащих треугольнику. Короче, алгоритм должен "спозиционировать" опорный треугольник на функции кореляции так, чтобы был минимум квадратов отклонений. При этом все шумы (неровности на треугольнике) сгладятся и не повлияют на точность. В простом виде такой алгоритм заключается в нахождении двух линий - сторон треугольника слева и справа от вершины, и уже точку пересечения линий можно посчитать с высокой точностью, гораздо выше одного сэмпла. Это не правильно, оптимальная оценка получается именно нахождением максимума коррелятора, это будет максимально правдоподобная оценка. Никакая дополнительная фильтрация и "корреляция корреляции" не нужна. Цитата(DMax @ Sep 6 2009, 12:37)  Она имеет вид треугольника в том случае, когда частота дискретизации совпадает с частотой манипулирования фазой. Попробуйте увеличить частоту дискретизации скажем раз в 10 и вы увидите, что (в зависимости от того как ляжет такт оцифровки) пик согласованного фильтра у вас расползется на 9-10 точек примерно одного уровня. Если считать корреляцию в непрерывном времени, то для фазовой модуляции с мгновенными скачками фазы будет треугольник. В дискретном времени должен наблюдаться дискретизированный треугольник. p.s. Вообще два отсчета на символ для "прямоугольно-треугольного" случая, наверное маловато будет ( тут вспоминается тов. Котельников  )
Код 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))
--------------------
ну не художники мы...
|
|
|
|
|
Sep 7 2009, 09:08
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(alex_os @ Sep 7 2009, 11:17)  Это не правильно, оптимальная оценка получается именно нахождением максимума коррелятора, это будет максимально правдоподобная оценка. Никакая дополнительная фильтрация и "корреляция корреляции" не нужна. Моя версия ближе к истине чем у других. Я навёл справки у ребят, которые занимались аналогичной задачей. Только они находили период (то есть расстояние между пиками кор.функции) сложного сигнала методом кореляции с точностью намного выше одного сэмпла. В присутствии больших шумов вершина треугольника становится размазанной. От этого не избавиться никакой разумной фильтрацией. Алгоритм точного нахождения вершины заключается в следующем. Когда вершина размазана, как ни странно, но стороны треугольника на их средних уровнях очень прямые. Так вот требуется найти две точки на одинаковых (допустим правых) сторонах треугольника на одном горизонтальном уровне (примерно посередине высоты треугольника) и по этим точкам вычислить расстояние между ними для определения точного периода. Разумеется, две точки не будут иметь одинаковый уровень, поэтому одну из точек нужно будет интерполировать до соседней, при этом как раз позиция по Х второй точки на втором треугольнике будет дробной. Так вот, расстояние между точками (X2-X1) будет точным периодом. Применительно к этой поставленной задаче - нужно искать не пик корреляции, там неверное значение.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Sep 7 2009, 09:35
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(GetSmart @ Sep 7 2009, 13:08)  Моя версия ближе к истине чем у других. Я навёл справки у ребят, которые занимались аналогичной задачей. Только они находили период (то есть расстояние между пиками кор.функции) сложного сигнала методом кореляции с точностью намного выше одного сэмпла. В присутствии больших шумов вершина треугольника становится размазанной. От этого не избавиться никакой разумной фильтрацией. Алгоритм точного нахождения вершины заключается в следующем. Когда вершина размазана, как ни странно, но стороны треугольника на их средних уровнях очень прямые. Так вот требуется найти две точки на одинаковых (допустим правых) сторонах треугольника на одном горизонтальном уровне (примерно посередине высоты треугольника) и по этим точкам вычислить расстояние между ними для определения точного периода. Разумеется, две точки не будут иметь одинаковый уровень, поэтому одну из точек нужно будет интерполировать до соседней, при этом как раз позиция по Х второй точки на втором треугольнике будет дробной. Так вот, расстояние между точками (X2-X1) будет точным периодом. Так крутые фронты дрожат не меньше чем вершина. Просто чисто технически удобнее находить превышение некоего порога чем максимум, да интерполяция (т.е. определение периода с точностью до долей периода дискретизации) по фронтам треугольного импульса проще получается...
--------------------
ну не художники мы...
|
|
|
|
|
Sep 7 2009, 09:53
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(alex_os @ Sep 7 2009, 15:35)  Так крутые фронты дрожат не меньше чем вершина. Это по-вашему, гипотетически. Ну а практически - реально меньше. Цитата(petrov) Почитайте книжки по радиолокации, максимум на выходе согласованного фильтра это и есть самый луший обнаружитель, лучше в принципе сделать невозможно что бы там ребята не говорили. Может оказаться так, что реализация подходящего согласованного фильтра будет черезмерно сложной (если не гипотетической), по сравнению с предложенным мной алгоритмом. Я говорю о том, что информация о пике/максимуме находится не только на вершине, но и на склонах треугольника. И просто взглянув на график кор.функции очень зашумлённого сигнала можно будет понять откуда проще и точнее вытащить информацию о максимуме. Цитата(alex_os @ Sep 7 2009, 15:48)  Кстати у треугольника есть еще левая сторона  , можно находить время пересечения порога с левой стороной и момент пересечения с правой и усреднять. Только у этого треугольника может быть ещё наклон, который всё подпортит  Но пораскинув мозгами можно и эту проблему решить.
Сообщение отредактировал GetSmart - Sep 7 2009, 10:27
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Sep 7 2009, 10:30
|
Знающий
   
Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030

|
Цитата(GetSmart @ Sep 7 2009, 13:53)  Это по-вашему, гипотетически. Ну а практически - реально меньше. Практическое подтверждение  . Девиация положения максимума 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)
--------------------
ну не художники мы...
|
|
|
|
Сообщений в этой теме
DMax Уточнение момента прихода сигнала Sep 4 2009, 19:25 DRUID3 Котельников и Найквист крутятся в гробах... Sep 4 2009, 20:27 petrov Цитата(DMax @ Sep 4 2009, 23:25) Но тут н... Sep 5 2009, 06:47 DMax Цитата(petrov @ Sep 5 2009, 10:47) В ради... Sep 5 2009, 20:29  DRUID3 Цитата(DMax @ Sep 5 2009, 23:29) Узнал но... Sep 5 2009, 20:55  alex_os Цитата(DMax @ Sep 6 2009, 00:29) Как бы п... Sep 6 2009, 07:25   DMax Цитата(alex_os @ Sep 6 2009, 11:25) Аппро... Sep 6 2009, 08:37    GetSmart Цитата(DMax @ Sep 6 2009, 14:37) 1) ..., ... Sep 6 2009, 08:42     DMax Цитата(GetSmart @ Sep 6 2009, 12:42) Это ... Sep 6 2009, 08:47      GetSmart Цитата(DMax @ Sep 6 2009, 14:47) Вы матем... Sep 6 2009, 08:54      DRUID3 Цитата(DMax @ Sep 6 2009, 11:47) Ну хорош... Sep 7 2009, 13:39       GetSmart Цитата(DRUID3 @ Sep 7 2009, 19:39) Частот... Sep 7 2009, 14:17        DRUID3 Цитата(GetSmart @ Sep 7 2009, 17:17) Во-п... Sep 7 2009, 15:22         GetSmart Цитата(DRUID3 @ Sep 7 2009, 21:22) А вот ... Sep 7 2009, 15:42       DMax Цитата(DRUID3 @ Sep 7 2009, 17:39) ОК. Ес... Sep 7 2009, 15:57        bahurin Думаю, что если шум аддитивный с нулевым среднем, ... Sep 7 2009, 16:16         samurad Цитата(bahurin @ Sep 7 2009, 20:16) Думаю... Sep 10 2009, 13:08          bahurin Цитата(samurad @ Sep 10 2009, 17:08) Есть... Sep 10 2009, 17:33           GetSmart Цитата(bahurin @ Sep 10 2009, 23:33) Это ... Sep 11 2009, 03:04            bahurin Цитата(GetSmart @ Sep 11 2009, 07:04) Воз... Sep 11 2009, 06:39             samurad Цитата(bahurin @ Sep 11 2009, 10:39) Это ... Sep 11 2009, 10:20              bahurin Цитата(samurad @ Sep 11 2009, 14:20) А к ... Sep 11 2009, 10:55    petrov Цитата(DMax @ Sep 6 2009, 12:37) эталонну... Sep 6 2009, 08:57     sup-sup Скорее всего, если полученный результат с выхода к... Sep 6 2009, 12:28     DMax Цитата(petrov @ Sep 6 2009, 12:57) Надо н... Sep 7 2009, 08:31      alex_os Цитата(DMax @ Sep 7 2009, 12:31) Мне уже ... Sep 7 2009, 09:10      petrov Цитата(DMax @ Sep 7 2009, 12:31) Мне уже ... Sep 7 2009, 09:21       GetSmart Цитата(petrov @ Sep 7 2009, 15:21) Писали... Sep 7 2009, 09:33        petrov Цитата(GetSmart @ Sep 7 2009, 13:33) В то... Sep 7 2009, 09:45         GetSmart Цитата(petrov @ Sep 7 2009, 15:45) максим... Sep 7 2009, 11:48          fontp Цитата(GetSmart @ Sep 7 2009, 15:48) А шо... Sep 7 2009, 11:52           GetSmart Цитата(fontp @ Sep 7 2009, 17:52) Так вся... Sep 7 2009, 12:01            petrov Цитата(GetSmart @ Sep 7 2009, 16:01) Я та... Sep 7 2009, 12:06        alex_os Цитата(GetSmart @ Sep 7 2009, 13:33) В то... Sep 7 2009, 09:48 GetSmart Можно я тут сумничаю?
Надо сделать ещё одну ... Sep 6 2009, 08:25 petrov Парабола известна заранее(кроме сдвига), 2-х точек... Sep 6 2009, 08:33 SSerge Похожую задачу решают в GPS-приёмниках. Посмотрите... Sep 6 2009, 08:34 bahurin Цитата(DMax @ Sep 4 2009, 23:25) Доброго ... Sep 6 2009, 12:50 Alex65111 Цитата(petrov @ Sep 6 2009, 12:57) в чём ... Sep 6 2009, 17:49 des00 Цитата(Alex65111 @ Sep 6 2009, 12:49) А н... Sep 7 2009, 03:14  Alex65111 Цитата(des00 @ Sep 7 2009, 07:14) как я п... Sep 7 2009, 04:29     fontp Цитата(alex_os @ Sep 7 2009, 14:30) Практ... Sep 7 2009, 10:42 fontp По первой части вопроса, есть теоретически достижи... Sep 7 2009, 10:13 thermit ЦитатаGetSmart:
Все фильтры предназначены для сину... Sep 7 2009, 12:03 thermit ЦитатаGetSmart:
Во-первых, корреляция не раскладыв... Sep 7 2009, 14:38 GetSmart Это как в том анекдоте - "во, валит!...... Sep 7 2009, 14:57 sup-sup Цитата(DMax @ Sep 4 2009, 22:25) Доброго ... Sep 7 2009, 18:41 DMax Цитата(sup-sup @ Sep 7 2009, 22:41) ... Sep 8 2009, 07:19  alex_os Цитата(DMax @ Sep 8 2009, 11:19) У меня в... Sep 8 2009, 08:00  petrov Цитата(DMax @ Sep 8 2009, 11:19) У меня в... Sep 8 2009, 08:00   DMax Прошу прощения, что пропал с этой темой. Был в отп... Sep 26 2009, 14:07 petrov Пусть имеем два отсчёта на символ. Согласованный ... Sep 26 2009, 22:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|