Дано. Сигнал и его копия, копия задержана 0.1 сек и пришла другим путем. Источник 455 кГц, монохроматичен и стабилен. Fd 10 msps, 8 bit. Пик фактор сигнала <5. Доплера пока нет в принятых. Нужно найти сдвиг фазы поточнее. Сейчас делаю что, просто тупо два Фурье от обоих, смотрю дельту angle на заданном "бине". Вроде получается но есть вопросы. Разрешение по времени значительно выше чем по Найквисту, получаю несколько бинов со значительной амлитудой. Что с ними делать? Может оконная ф-ция навроде хамминга нужна? Но для фазы. Второе - в половине случаев фурье дает угол меньше на 2пи, приходится прибавлять, чядн? unwrap как то совсем ни к месту, тупо if завел. Ну и есть способы лучше? Может xcorr? Сорри я нуб. .. Наверное надо сделать опорный синус и посчитать интеграл от угла с квадратурой опорной.. только не совсем понимаю как
Lmx2315
Jan 7 2017, 08:36
Говорю на основе теоретических фантазий:
1. Перемножить два сигнала раз они когерентны и отфильтровать - в остатке будет нечто пропорциональное разности фаз.
2. Перевести оба сигнала в комплексный вид и завести на два cordic-а с них снять мгновенные фазы и вычесть их друг с друга - получив разность фаз.
Цитата(Lmx2315 @ Jan 7 2017, 11:36)

Говорю на основе теоретических фантазий:
1. Перемножить два сигнала раз они когерентны и отфильтровать - в остатке будет нечто пропорциональное разности фаз.
2. Перевести оба сигнала в комплексный вид и завести на два cordic-а с них снять мгновенные фазы и вычесть их друг с друга - получив разность фаз.
Да зачем мне Кордик, ресурсов полно пока что. Смотрю пока на Фурье, он все равно в итоге тоже самое делает. А зачем в комплексный то переводить? Комплексный спектр и так выйдет после DFT
просто корреляция для нескольких значений сдвига между двумя сигналами может оказаться быстрее даже чем FFT.
а потом какую-нибудь параболу наименьшими квадратами на результат натянуть, чтобы положение максимума найти.
Цитата(_pv @ Jan 7 2017, 12:52)

просто корреляция для нескольких значений сдвига между двумя сигналами может оказаться быстрее даже чем FFT.
а потом какую-нибудь параболу наименьшими квадратами на результат натянуть, чтобы положение максимума найти.
да это все замечательно, это будет следующее. Мне сейчас надо вообще как можно качественнее сдвиг этот найти, оптимизации все пока что побоку. Я просто не уверен что делаю все правильно через DFT. Тут эффекты от кратности длины выборки и частоты семплирования вылезают забавные. В общем я похоже просто пока путаюсь при переходе от FTк DFT. Попробую нулей что ли добить.
Цитата(_pv @ Jan 7 2017, 12:52)

просто корреляция для нескольких значений сдвига между двумя сигналами может оказаться быстрее даже чем FFT.
а потом какую-нибудь параболу наименьшими квадратами на результат натянуть, чтобы положение максимума найти.
Так это же можно автокорреляцию сделать. Но я кажется понял, что и в том и другом случае мне надо увеличивать разрешение по частоте, просто "увеличив"выборку добавив нули
Вроде как-то так получилось
тестовые данные бы сюда прикрепили.
с Фурье есть вопрос на какой именно частоте разность фаз смотреть.
ну и плюс отсутсвие окна действительно положение максимума спектра будет двигать за счёт наличия "всяких забавных эффектов".
можно конечно и автокорреляцией сначала найти "основную частоту" и потом смотреть сколько там фазы у обоих сигналов просто посчитав интеграл Фурье для этой конкретной частоты, но тогда проще сразу считать взаимную корреляцию двух сигналов и искать на ней максимум.
У меня не два разных сигнала, а один, пришедший разными путям и, причем его задержка мне известна, я же его и излучаю. Мне неизвестна разность фаз. А автокорреляция емнип через Фурье и делается
с таким объяснением про известную задерку но неизвестные фазы стало ещё непонятнее

если бы данные, по которым ДВЕ спектральные картинки выше построены, сюда прикрепили, было бы гораздо понятнее.
blackfin
Jan 7 2017, 19:43
Цитата(DASM @ Jan 7 2017, 22:16)

У меня не два разных сигнала, а один, пришедший разными путям и, причем его задержка мне известна, я же его и излучаю. Мне неизвестна разность фаз.
Вроде бы, уже решали эту задачу:
Измерение фазового сдвига Sin..Если сигналов два, вероятно, нужно будет вычислить фазу дважды, для обоих сигналов относительно опорных sin и cos.
Искомая фаза будет равна разности измеренных фаз.. ИМХО..
Цитата(blackfin @ Jan 7 2017, 22:43)

Вроде бы, уже решали эту задачу:
Измерение фазового сдвига Sin..Если сигналов два, вероятно, нужно будет вычислить фазу дважды, для обоих сигналов относительно опорных sin и cos.
Искомая фаза будет равна разности измеренных фаз.. ИМХО..
Ну так Фурье оно и есть, только оно по всему спектру. Это и сделал и это уже работает. Удручен дрейфом фазы гетеродина, хоть и кварцеванного. Буду думать.
Задержка известна примерно, там один и тотже сигнал переключается с фиксированной частотой на две антенны. А на приемной имеем.. ну поняли ?
Это я прошелся уже скользящим Фурье по всей большой выборке с перекрывающимся окошком. Видно как плывет фаза

У меня три периода, 1-ый работает одна антенна, второй - вторая, третий - молчание в эфире. Вот и видно их и шум между ними некоррелированный. Везде фаза сравнивается по одной частотной полоске из разложения Фурье и везде сравнение с самым первым "окном" в графике, то есть это long term drift. Код приводить не буду он ужасен. Но в принципе все работает
jorikdima
Jan 7 2017, 23:13
Все таки не могу понять, чем не устраивает два измерения фазы (ПЛЛ) и разность между ними? Очень просто и быстро. Зачем фурье приплетать?
Ну зато сообразил откуда "дрейф", просто я частоту неточно смотрю. Да и дрейф все равно есть Главное что метод работает, и недалек от оптимального
Lmx2315
Jan 8 2017, 08:59
Тему надо было назвать - "хочу измерять фазу через Фурье".
Artem_Petrik
Jan 8 2017, 14:28
Посчитать свертку сигналов друг с другом (ака ВКФ), и найти ближайший максимум - его положение = задержка, если надо, из нее фазу уже вычислить
Цитата(Artem_Petrik @ Jan 8 2017, 17:28)

Посчитать свертку сигналов друг с другом (ака ВКФ), и найти ближайший максимум - его положение = задержка, если надо, из нее фазу уже вычислить
Все немного не так оказалось. У меня по сути своей BPSK, очень низкоскоростной, порядка 50 Гц ключевание на 90 гр. Пока что считаю Фурье по "окнам", которые скользят по сигналу. Проблемы в неопределенности частоты реальной, точно ее можно определить только на бесконечном промежутке времени

Цель конечная на самом деле не получение информации от манипуляции, а вычисление сдвига фазы между битами с максимальной точностью. Как бы по Фурье все работает, ищу максимумы амплитуды и на этой частоте фазу. Но сигнал шум не совсем хорошо исходный, около 0 Дб. Конечно буду улучшать все параметры, но хочется выжать максимум в любом случае. О, вроде же любительская связь есть похожего принципа, надо будет посмотреть
Artem_Petrik
Jan 9 2017, 10:31
Цитата(DASM @ Jan 9 2017, 06:47)

Проблемы в неопределенности частоты реальной...
Ну, так в предложенном мной методе частоту знать и не нужно. Разве что, чтоб микросекунды задержки в фазу пересчитать. А если именно задержка интересует, то и вовсе не нужно. Собственно взаимная корреляция именно для этого и придумана. Конечно синусоидальный сигнал не самый лучший для определения задержки, пик будет довольно пологий, (ЛЧМ бы...), но тут уж что есть. По точности вряд ли что-то лучше можно придумать.
Цитата(Artem_Petrik @ Jan 9 2017, 13:31)

Ну, так в предложенном мной методе частоту знать и не нужно. Разве что, чтоб микросекунды задержки в фазу пересчитать. А если именно задержка интересует, то и вовсе не нужно. Собственно взаимная корреляция именно для этого и придумана. Конечно синусоидальный сигнал не самый лучший для определения задержки, пик будет довольно пологий, (ЛЧМ бы...), но тут уж что есть. По точности вряд ли что-то лучше можно придумать.
Не, там же амплитудная каша же. Разве что первое приближение по частоте получить, но Фурье то все равно делать на этой частоте, так что нет смысла. Вопрос толоько нужна ли мне ФАПЧ,? Я в какой-то мере ее же и реализую.. сам сигнал по частоте то стабилен, как бы ФАПЧ и не надо.. но с ФАПЧ можно бы синхронный приемник по железу использовать, а сейчас у меня обычный с низкой ПЧ.
Artem_Petrik
Jan 9 2017, 11:50
Изначально у меня создалось впечатление, что задача - определить задержку между двумя сигналами, принятыми с разных путей распространения сигнала. Корреляционный метод тут очень в тему. "Приближение по частоте" - это совсем другая задача, и метод ее решения другой, тут да, ФАПЧ, фурье.
Амплитудная каша из-за соотношения С/Ш? Если шум в каналах не коррелирован - он при свертке уйдет. Оптимальный фильтр, опять же, но он в тракте и так должен быть. А от того, что останется, уже никуда не денешься, какой метод не применяй.
jorikdima
Jan 9 2017, 23:03
Близко. Но мне надо только понять глубину своего невежства, дабы я смог понять хотя бы результат работы того, что напишет математик (ищем человека). Ну и пока что макет довести уж как есть
Гм.. после сидения в Матлаба с разными параметрами пришла мысль - а не проще ли мне модулировать на приемной стороне с более высокой частотой, превращая фазовую модуляцию в частотную? Ну правда уточнять все равно придется по фазе.. Ну и как всегда вечная проблема SNR vs Time, хочешь точнее - делай дольше или фильтруй лучше. Где экстремум соотношения искать?
Ищите по " seven parameter dual sine fit" типа как тут
https://pdfs.semanticscholar.org/33d3/4ad52...3a3945e3828.pdf - хороший алгоритм для нахождения разности фаз на коротких выборках при гарантированной одинаковости частот двух синусов. Амплитуда, фаза и сдвиг нуля - свободные параметры.
Но при "рваных" изменениях фазы очень желательна синхронизация по моменту смены фазы, иначе алгоритм сходит с ума.
Цитата(khach @ Jan 10 2017, 13:18)

Ищите по " seven parameter dual sine fit" типа как тут
https://pdfs.semanticscholar.org/33d3/4ad52...3a3945e3828.pdf - хороший алгоритм для нахождения разности фаз на коротких выборках при гарантированной одинаковости частот двух синусов. Амплитуда, фаза и сдвиг нуля - свободные параметры.
Но при "рваных" изменениях фазы очень желательна синхронизация по моменту смены фазы, иначе алгоритм сходит с ума.
Спасибо, но Вы не очень поняли, у меня шум намного больше сигнала
Цитата(DASM @ Jan 10 2017, 13:53)

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

А пока и 5 баксов за STM нормально
Alex11
Jan 15 2017, 19:12
Я умею вытаскивать фазу из FFT. Частоту при этом нужно из того же FFT определять достаточно точно, иначе в фазе получается большая ошибка. Можно попробовать реальные данные затолкать в модель, посмотреть, что будет получаться при реальном шуме и нестабильности частоты.
Цитата(Alex11 @ Jan 15 2017, 22:12)

Я умею вытаскивать фазу из FFT. Частоту при этом нужно из того же FFT определять достаточно точно
А как вы вытаскиваете фазу, если в FFT энергия сигнала распределена на несколько бинов? Частоту вытаскивают аппроксимацией функции гаусса, а вот как с фазой быть? Ее достаточно сильно крутит от бина к бину, какой функцией надо аппроксимировать?
И вопрос ко всем- если частота сигнала несколько именяется в процессе измерений, а вот разность фаз ожидается постоянной ( сигнал типа ЛЧМ) каким алгоритмом можно вытянуть фазу из такой пары сигналов?
после нахождения максимума частоты аппроксимацией Гаусса, для найденной частоты можно просто интеграл Фурье посчитать и взять значение фазы оттуда.
а для ЛЧМ взаимная корреляция двух сигналов даст задержку между ними по времени.
опять же наверное можно и через быстрое Фурье: свёртка во временной области == умножение в частотной.
>Спасибо, но Вы не очень поняли, у меня шум намного больше сигнала
а как тогда фильтровать результаты FFT?
обычно запускают NCO+фазовый детектор к принятому сигналу - ну а полосой фильтра регулируется "время накопления"
потом сравнивают это NCO с опорным генератором
Alex11
Jan 16 2017, 15:12
Фаза крутится от бина к бину линейно. Ее нужно пересчитывать на точку реальной частоты между бинами. Чтобы учесть несколько ненулевых бинов есть еще ухищрения.
Да, Алекс11 все верно сказал, так и делал, сорри что не отписался сюда сразу. Вернее я не совсем дошел еще то того что делать с бинами, теперь понял почти что. Тогда я просто максимальный выуживал, но естественно имел биения на нем фазовые из-за некратности fs и fdis. Меня сейчас больше заботит момент - как мне синхронизироваться с этой бифазной посылкой, если хочу интегралы по максимальной выборке иметь для каждой из фаз, дабы получить в итоге насколько она сдвинута в них между ними (они не квадратурны и не противофазны). Пока что глажу окошком по тому что имею, но это школьно очень, к тому же в устройстве не Матлаб стоять будет совсем даже по производительности.
Alex11
Jan 19 2017, 19:12
А какое у Вас отношение частоты модуляции к частоте несущей?
Цитата(Alex11 @ Jan 19 2017, 22:12)

А какое у Вас отношение частоты модуляции к частоте несущей?
Одна фаза порядка 20 мс длится, заполнение 3.5 МГц
Alex11
Jan 20 2017, 17:06
Так что Вас тогда смущает. Берете фурье по 100 (примерно) периодов несущей. Получите точность перехода фазы по времени примерно 1/700 от длительности фазы, это если с точностью до одного буфера. Или Вам нужно точнее? Можно и меньше периодов попробовать, но тут нужно смотреть на сигнал/шум. Хватит ли.
Цитата(Alex11 @ Jan 20 2017, 20:06)

Так что Вас тогда смущает. Берете фурье по 100 (примерно) периодов несущей. Получите точность перехода фазы по времени примерно 1/700 от длительности фазы, это если с точностью до одного буфера. Или Вам нужно точнее? Можно и меньше периодов попробовать, но тут нужно смотреть на сигнал/шум. Хватит ли.
Я так и делаю, все получается. Хотелось бы получить все с что можно и получить новые знания. А так задача решена почти по итогу
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.