Перейти к содержанию

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

Добрый день!
Есть 128 выборок сигнала и эталона. 128 выборок является периодом. Необходимо вычислить сдвиг по фазе 2 сигналов. Как это сделать без перебора?

[attachment=111037:_______.PNG]

На графике пример 2 сигналов с 36 выборками. Если 36 выборок я могу обработать методом перебора (сдвиг на 1 и сравнение сигналов), то 128 занимает в 10 раз больше времени.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Ключевое слово для гугля будет "вычисление корреляционной функции через преобразование Фурье".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Rst7 @ Feb 7 2018, 18:09) <{POST_SNAPBACK}>
Ключевое слово для гугля будет "вычисление корреляционной функции через преобразование Фурье".

Правильно ли я понял, что предлагаете посчитать корреляцию эталона (один раз) и фактического сигнала с синусом и косинусом основной гармоники и по ним считать разность фаз?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Преобразование фурье ведь вычисляет фазовый спектр. Вот и найти фазу первой гармоники.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(novikovfb @ Feb 8 2018, 11:35) <{POST_SNAPBACK}>
Правильно ли я понял, что предлагаете посчитать корреляцию эталона (один раз) и фактического сигнала с синусом и косинусом основной гармоники и по ним считать разность фаз?

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(_pv @ Feb 8 2018, 11:15) <{POST_SNAPBACK}>
нет,
произведению сигналов в частотной области соответствует свертка сигналов во временной области
но даже для 128 отсчётов сделать три (два на самом деле, эталон можно посчитать один раз заранее) преобразования Фурье, хоть и быстрых, в зависимости от того на чём считается, может оказаться не быстрее прямого вычисления корреляции.
через Фурье выигрыш будет для более длинных выборок.

зачем полное Фурье? Достаточно посчитать корреляцию два раза (по синусу и по косинусу).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(novikovfb @ Feb 8 2018, 14:53) <{POST_SNAPBACK}>
зачем полное Фурье? Достаточно посчитать корреляцию два раза (по синусу и по косинусу).

какой частоты?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(_pv @ Feb 8 2018, 11:38) <{POST_SNAPBACK}>
какой частоты?

Частоты основной гармоники сигнала и основной гармоники эталона. Они ведь равны, эти частоты, если верить графику из первого поста?..

PS. Понятно, что нужные коэффициенты для первой гармоники Фурье надо считать на временном интервале, кратном общему периоду обоих сигналов..

PPS. И соглашусь, выигрыша по количеству вычислений этот метод не даст..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(novikovfb @ Feb 8 2018, 07:35) <{POST_SNAPBACK}>
Правильно ли я понял, что предлагаете посчитать корреляцию эталона (один раз) и фактического сигнала с синусом и косинусом основной гармоники и по ним считать разность фаз?

Если у меня период равен 128 выборкам, то период основной гармоники тоже равен 128? Предложение понравилось, это ускорит вычисления, только будет ли это работать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Sergey Krivonosov @ Feb 8 2018, 11:50) <{POST_SNAPBACK}>
Предложение понравилось, это ускорит вычисления, только будет ли это работать?

Работать будет, если научитесь быстро вычислять арктангенс и делить комплексные числа. biggrin.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(blackfin @ Feb 8 2018, 12:47) <{POST_SNAPBACK}>
PPS. И соглашусь, выигрыша по количеству вычислений этот метод не даст..

По сравнению с идеей 128 раз сравнивать эталон с реальным сигналом (см. первое сообщение)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(novikovfb @ Feb 8 2018, 12:36) <{POST_SNAPBACK}>
По сравнению с идеей 128 раз сравнивать эталон с реальным сигналом (см. первое сообщение)?

Судя по графику из первого поста, нет необходимости делать сравнение все 128 раз.

Во-первых, можно взять лишь один период эталонного сигнала и искать совпадение с этим укороченным эталоном и на укороченном интервале.
Это, ессно, в том случае, если на интервале в 128 точек укладывается несколько периодов эталонного сигнала.. /См. рис./

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

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

Зачем искать сигнал там, где заранее известно, что его нет? biggrin.gif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(blackfin @ Feb 8 2018, 11:52) <{POST_SNAPBACK}>
Во-первых, можно взять лишь один период эталонного сигнала и искать совпадение с этим укороченным эталоном и на укороченном интервале.
Это, ессно, в том случае, если на интервале в 128 точек укладывается несколько периодов эталонного сигнала.. /См. рис./

Вы наверное не поняли задачу. Все получаемые сигналы и все эталоны имеют один и тот же период 128 выборок. Если сигнал и эталон совпадают, они могут отличаются только сдвигом на n количество выборок (0-127).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(Sergey Krivonosov @ Feb 8 2018, 15:32) <{POST_SNAPBACK}>
Вы наверное не поняли задачу. Все получаемые сигналы и все эталоны имеют один и тот же период 128 выборок. Если сигнал и эталон совпадают, они могут отличаются только сдвигом на n количество выборок (0-127).

Даже если и так, никто не мешает сделать сначала грубый поиск по 16-ти точкам отстоящим друг от друга на 8 выборок, а потом уточнить сдвиг между сигналами вычисляя корреляцию уже для всех 128-ми точек и для сдвигов на максимум 8 точек влево и вправо относительно найденной грубой оценки искомой точки.

Все, конечно, зависит от уровня шума и спектров обоих сигналов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Цитата(blackfin @ Feb 8 2018, 14:50) <{POST_SNAPBACK}>
Даже если и так, никто не мешает сделать сначала грубый поиск по 16-ти точкам отстоящим друг от друга на 8 выборок, а потом уточнить сдвиг между сигналами вычисляя корреляцию уже для всех 128-ми точек и для сдвигов на максимум 8 точек влево и вправо относительно найденной грубой оценки искомой точки.

Все, конечно, зависит от уровня шума и спектров обоих сигналов.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация