_sda 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба Коллеги, нужно измерять частоту и фазу входного радиоимпульса. С частотой пока вопросов нет, по номеру бина с максимальным возбуждением вычисляем частоту несущей радиоимпульса. А вот с фазой есть неясности. На верхней картинке изображено начало входного кадра (первые 100 отсчётов) БПФ 16К с присутствующим радиоимпульсом. На нижней картинке совмещены и смасштабированы изображения модуля и фазы для выходного кадра БПФ в окрестности частоты входного радиосигнала (эта частота соответствует бину номер 2206). Видно что при увеличении уровня модуля значение фазы начинает "скакать" относительно -20 градусов, т.е. принимает значения -20 +-90. Т.е. (-110 ... +70) градусов. 1). О чём говорят эти значения? На верхней картинке видно что сигнал является синусом и имеет нулевую начальную фазу. 2). Почему происходят скачки фазы? Есть ли какая закономерность этих скачков? 3). При низком SNR входного сигнала есть вероятность ошибочного определения центрального бина сигнала, а ошибка на один бин даст ошибку фазы 180 градусов. Есть ли методы для борьбы с этим эффектом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lmx2315 2 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба У вас наверное окно наложено на входной сигнал, без окна пробовали? И как вы получали фазу - через арктангенс половинок комплексного числа? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 44 minutes ago, _sda said: На нижней картинке совмещены и смасштабированы изображения модуля и фазы для выходного кадра БПФ в окрестности частоты входного радиосигнала (эта частота соответствует бину номер 2206). Оценку фазы радиоимпульса нужно делать в точке, где модуль спектра имеет максимальное значение. Значение фазы в других точках показывает фазу отдельных гармоник, из которых состоит весь спектр радиоимпульса. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба sin(x)/x колеблется то вверх, то вниз, меняя фазу. А на картинке он показан модулем амплитуды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 47 минут назад, Lmx2315 сказал: У вас наверное окно наложено на входной сигнал, без окна пробовали? И как вы получали фазу - через арктангенс половинок комплексного числа? Не пробовал и не буду. Частота сигнала неизвестна, может попасть между бинами. phi = angle(x) 33 минуты назад, blackfin сказал: Оценку фазы радиоимпульса нужно делать в точке, где модуль спектра имеет максимальное значение. Значение фазы в других точках показывает фазу отдельных гармоник, из которых состоит весь спектр радиоимпульса. А если два соседних бина имеют одинаковое максимальное значение модуля спектра, какое значение обрабатывать - первое или последующее? При неправильном выборе будет ошибка в 180 градусов. 34 минуты назад, ViKo сказал: sin(x)/x колеблется то вверх, то вниз, меняя фазу. А на картинке он показан модулем амплитуды. Как это поможет извлечь правильное значение фазы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 52 minutes ago, _sda said: 1). О чём говорят эти значения? На верхней картинке видно что сигнал является синусом и имеет нулевую начальную фазу. 2). Почему происходят скачки фазы? Есть ли какая закономерность этих скачков? 3). При низком SNR входного сигнала есть вероятность ошибочного определения центрального бина сигнала, а ошибка на один бин даст ошибку фазы 180 градусов. Есть ли методы для борьбы с этим эффектом? 1,2 вы бы данные приложили, а то не понятно что там за данные и что вы с ними сделали, 3) возьмите +- несколько точек от максимума натяните на них параболу и найдите точнее положение максимума, потом на этой нецелой частоте можно отдельно посчитать интегралы Фурье и из них найти фазу и амплитуду. ну либо потом опять можно повторить поиск максимума по интегралам Фурье в ещё более узкой области, пока не надоест либо пока в шумы не упрётесь. на картинке - сигнал; FFT от него (модуль/агрумент); cумма сигнала помноженнего на sin/cos с шагом по частоте гораздо более мелким чем 1 бин (тоже модуль и арктангенс); наложенные друг на друга 2+3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 31 минуту назад, _pv сказал: 1,2 вы бы данные приложили, а то не понятно что там за данные и что вы с ними сделали, 3) возьмите +- несколько точек от максимума натяните на них параболу и найдите точнее положение максимума, потом на этой нецелой частоте можно отдельно посчитать интегралы Фурье и из них найти фазу и амплитуду. ну либо потом опять можно повторить поиск максимума по интегралам Фурье в ещё более узкой области, пока не надоест либо пока в шумы не упрётесь. Грустно. Максимум модуля по трём точкам я найду, а вот что с ним дальше делать? Без интегралов Фурье никак? Задача не академическая, нужно будет реализовывать в FPGA. По графикам, честно говоря, ничего не понял. Если первый и второй ещё понятны, то третий и четвёртый совсем мимо кассы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 3й график это тот же спектр и фаза, но посчитанный через ДПФ на "нецелых" частотах, c гораздо более мелким шагом по частоте. при наложении одного на другой совпадает с FFT (вот это да!) в тех "целых" частотах где этот FFT считается. и сколько там ресурсов / тактов на FFT уйдёт? один дополнительный умножитель для вычисления Герцелем имхо не заметен будет на фоне FFT на 16к. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 15 минут назад, _pv сказал: один дополнительный умножитель для вычисления Герцелем имхо не заметен будет на фоне FFT на 16к. Что-то я никак не могу понять общий алгоритм действий. Вы предлагаете выхлоп FFT скормить Герцелю? Если не трудно, раскройте ,плз, вашу мысль. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_pv 52 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба реальный максимум вполне может оказаться где-то посередине между частотами на которых считает FFT, можно аппроксимацией какой-нибудь параболой/гауссом/sinc интерполяцией найти реальный максимум, и потом так же интерполировать фазу. либо взять sin/cos от этой частоты перемножить с сигналом и посчитать фазу. а если FFT нужен только для нахождения максимума, можно с самого начала оценить частоту просто как отношение среднеквадратичных значений сигнала и производной сигнала и считать потом не весь спектр на 16к точек, а только несколько частот около максимума Герцелем. FFT хоть и O(N log N), но для 16к точек ДПФ на нескольких частотах может оказаться проще/быстрее чем вычисление всего спектра для нахождения одной единственной фазы. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 6 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба _sda 2). Почему происходят скачки фазы? Есть ли какая закономерность этих скачков? Вы смотрите сигналы с выходов фильтров, посмотрите ФЧХ этих фильтров и увидите скачки между ними. 3). При низком SNR входного сигнала есть вероятность ошибочного определения центрального бина сигнала, а ошибка на один бин даст ошибку фазы 180 градусов. Есть ли методы для борьбы с этим эффектом? Просто прибавляется соответствующая номеру фильтра фазовая константа после angle. Могу на модели фазовой синхронизации в симулинке показать, если будете смотреть... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
blackfin 16 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба 51 minutes ago, _sda said: Что-то я никак не могу понять общий алгоритм действий. Вы предлагаете выхлоп FFT скормить Герцелю? Не нужен тут никакой Герцель. )) Просто возьмите лист бумаги и вручную посчитайте коэффициент разложения радиоимпульса в ДПФ. Там получится простая формула из двух слагаемых для положительных и отрицательных частот. Отбрасывая слагаемое с отрицательными частотами, получите "точную" формулу для фазы вашего радиоимпульса. Для вычисления по этой формуле самой фазы вам понадобится точное значение частоты несущей радиоимпульса. Эту частоту вы можете найти параболической интерполяцией максимума спектра радиоимпульса по трем точкам. Можно даже вычислить две фазы по бинам слева и справа от несущей и сделать усреднение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
petrov 6 26 мая, 2021 Опубликовано 26 мая, 2021 · Жалоба blackfin Для вычисления по этой формуле самой фазы вам понадобится точное значение частоты несущей радиоимпульса. Эту частоту вы можете найти параболической интерполяцией максимума спектра радиоимпульса по трем точкам. Можно даже вычислить две фазы по бинам слева и справа от несущей и сделать усреднение. И это не нужно.)) На выходе максимального фильтра банка фильтров ДПФ уже имеется фаза. Нужно только фильтры взять с пекрытием АЧХ, и скачки устранить практически бесплатной операцией. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 13 часов назад, _pv сказал: а если FFT нужен только для нахождения максимума, можно с самого начала оценить частоту просто как отношение среднеквадратичных значений сигнала и производной сигнала и считать потом не весь спектр на 16к точек, а только несколько частот около максимума Герцелем. FFT хоть и O(N log N), но для 16к точек ДПФ на нескольких частотах может оказаться проще/быстрее чем вычисление всего спектра для нахождения одной единственной фазы. О, нет, так не пойдёт, я ведь только задачу описал, типа разберусь с одним сигналом - легче будет с другими. В реальности сигналов может быть много (максимум до сотни) и несущие частоты этих сигналов заранее не известны. Поэтому БПФ используется в основном для определения частот сигналов и их уровня. Это сейчас в рабочий проект нужно добавить измерение фазы. На свежую голову посмотрел ваши графики, вроде всё понятно. Один вопрос - на четвёртом графике истиный максимум находится на бине 1092,5 и соответствующая ему фаза равна 60 градусов. На первом графике у вас синус с нулевой начальной фазой. Отчего возникает такая разница? Вроде же фаза на максимуме должна быть равна нулю. 13 часов назад, _pv сказал: можно аппроксимацией какой-нибудь параболой/гауссом/sinc интерполяцией найти реальный максимум, и потом так же интерполировать фазу. А как можно интерполировать фазу если её значения от бина к бину пляшут на 180 градусов? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 27 мая, 2021 Опубликовано 27 мая, 2021 · Жалоба 13 часов назад, petrov сказал: _sda 2). Почему происходят скачки фазы? Есть ли какая закономерность этих скачков? Вы смотрите сигналы с выходов фильтров, посмотрите ФЧХ этих фильтров и увидите скачки между ними. Ну да, скачки фазы видно, я их и привёл в топике. Но по их виду трудно определить закономерность. Зная её можно попытаться ввести поправку фазы. 13 часов назад, petrov сказал: _sda 3). При низком SNR входного сигнала есть вероятность ошибочного определения центрального бина сигнала, а ошибка на один бин даст ошибку фазы 180 градусов. Есть ли методы для борьбы с этим эффектом? Просто прибавляется соответствующая номеру фильтра фазовая константа после angle. Могу на модели фазовой синхронизации в симулинке показать, если будете смотреть... Т.е. вы хотите сказать что каждому выходному бину БПФ соответствует поправка, зависящая только от номера бина? Если это так то круто! И не зависит от положения максимума между бинами? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться