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

измерение фазы на выходе БПФ

36 minutes ago, _sda said:

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

А как можно интерполировать фазу если её значения от бина к бину пляшут на 180 градусов?

там частота на первом графике какая попало и фаза совсем не 0.

я и спрашивал что за сигнал и что именно вы с ним сделали что фаза так скачет. и почему вообще график выглядит как меандр?

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


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

38 минут назад, _pv сказал:

там частота на первом графике какая попало и фаза совсем не 0.

я и спрашивал что за сигнал и что именно вы с ним сделали что фаза так скачет. и почему вообще график выглядит как меандр?

Виноват, это мой косяк, исправляю.

 

sin_fft_phase.m

 

Если stairs заменить на plot то будет такая картинка, но суть остаётся.

image.thumb.png.1f40aa3d30cd4143d5be035573aad595.png

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


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

1 hour ago, _sda said:

И не зависит от положения максимума между бинами?

Зависит, ессно.

Фаза зависит от положения максимума между бинами, от временного сдвига радиоимпульса в окне БПФ и от длительности радиоимпульса. А более ни от чего не зависит.. ))

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


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

18 минут назад, blackfin сказал:

Зависит, ессно.

Фаза зависит от положения максимума между бинами, от временного сдвига радиоимпульса в окне БПФ и от длительности радиоимпульса. А более ни от чего не зависит.. ))

Это я отвечал Петрову на фразу:

Цитата

Просто прибавляется соответствующая номеру фильтра фазовая константа после angle.

Я так понял что он рассматривал БПФ как группу из N фильтров.

Посмотрите,плз, личку.

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


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

4 hours ago, _sda said:

image.png.b27f19ece513be87cde94f5f05ee20b9.png

А как можно интерполировать фазу если её значения от бина к бину пляшут на 180 градусов?

максимум между 1092 и 1093 отсчётами, фаза между ними вроде линейна, на других частотах дальше от максимума пусть пляшет как хочет, вам же фаза на этой определённой частоте ~1092.5 нужна.

если максимум посередине, то "промазав" на пол отсчёта влево/вправо по частоте (взяв ближайшего соседа), по фазе +-90 градусов и ошибки и получите.

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


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

3 минуты назад, _pv сказал:

если максимум посередине, то "промазав" на пол отсчёта влево/вправо по частоте (взяв ближайшего соседа), по фазе +-90 градусов ошибки и получите.

Т.е. эта ошибка неустранимая?

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


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

Может я чего-то не понимаю, но ваши рассуждения кажутся мне странными.

 

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

 

В вашем случае (не синус) правильно использовать не фазу, а временной сдвиг между передаваемым и принимаемым сигналом, или между двумя принимаемыми разными приемниками сигналами.

 

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

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


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

20 минут назад, rudy_b сказал:

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

Такое понятие как фаза принимаемого сигнала относительно старта набора данных для БПФ вас устраивает?

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


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

Нет. Время вашего старта и ваша частота оцифровки произвольны по отношению к сигналу и его частотному спектру.

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


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

13 минут назад, rudy_b сказал:

Нет. Время вашего старта и ваша частота оцифровки произвольны по отношению к сигналу и его частотному спектру.

Произвольны они в общем случае. А в моём конкретном случае входной сигнал синхронизирован с стартом набора данных с точностью до фазы.

Вот эту самую фазу мне и нужно измерять.

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


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

1 hour ago, _sda said:

Т.е. эта ошибка неустранимая?

надо измерить длину 1м, а нормальной линейки нет, есть две кривые, одна c см делениями на 1% длиннее, другая с делениями на 1% короче,

прикладываете вы их поочереди к измеряемому метру и одна показывает 99см, а другая 101см.

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

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


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

17 hours ago, _pv said:

максимум между 1092 и 1093 отсчётами, фаза между ними вроде линейна, на других частотах дальше от максимума пусть пляшет как хочет, вам же фаза на этой определённой частоте ~1092.5 нужна.

Глупости. ))

 

Вспоминаем свойства преобразования Фурье:

{\displaystyle f(t-a)} {\displaystyle e^{-i\omega a}F(\omega )} Запаздывание

 

 

То есть, сдвиг радиоимпульса на время "a" приводит к сдвигу фазы спектральной компоненты с частотой "ω" на величину "ωa".

Поэтому даже если фаза между 1092 и 1093 отсчётами линейна, всегда можно подобрать такую величину сдвига входного сигнала по времени, что для этого сдвинутого сигнала фаза на этой определённой частоте ~1092.5 будет иметь скачок на 360°.

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

 

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


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

39 минут назад, _pv сказал:

надо измерить длину 1м, а нормальной линейки нет, есть две кривые, одна c см делениями на 1% длиннее, другая с делениями на 1% короче,

прикладываете вы их поочереди к измеряемому метру и одна показывает 99см, а другая 101см.

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

У-у-у-у, как всё запущено. Я уже сегодня измеряю фазу с точностью +- 0,2 градуса. Остался ещё один маленький дефект, но думаю что завтра добью.

Так что не всё так мрачно как вы описали...

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


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

_sda

https://electronix.ru/forum/index.php?app=forums&module=forums&controller=topic&id=23652&page=13&tab=comments#comment-1755048

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

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


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

Есть красивое применение метода наименьших квадратов для выделения фазы сигнала в выборке:

 

Предположим, что опорное и принятое колебания описываются некоторой синусоидой на частоте ω и начальными фазами φ:

S1=Sin(ω t+φ1);

S2=Sin(ω t+φ2).

В такой форме метод наименьших квадратов неприменим для поиска фаз φ1 и φ2. Представим синусоиды с некоторыми начальными фазами как сумму синуса и косинуса с нулевыми начальными фазами, но разными амплитудами:

S1=A1Sin(ω t)+B1Cos(ω t);

S2=A2Sin(ω t)+B2Cos(ω t).

В такой форме коэффициенты (A1, B1) и (A2, B2) однозначно задают сигналы S1 и S2.

Начальные фазы каждого из сигналов выделяются при помощи следующей формулы:

φ1=Arctg(-A1/B1)+(1-Sgn[A1])π/2;

φ2=Arctg(-A2/B2)+(1-Sgn[A2])π/2.

После выделения начальных фаз обоих сигналов, находится их разность.

 

В конкретно вашем случае опорное колебание можете выбрать самостоятельно. Если вы хотите повысить точность и правильно подобрать частоту опорного колебания я бы вам посоветовал прочитать заметку Преобразование Фурье в действии: точное определение частоты сигнала и выделение нот / Хабр (habr.com).

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

 

Цифровой квадратурный детектор.jpg

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


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

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...