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

Выделение гармоник сигнала.

Задача: найти амплитуду полезного сигнала с частотой от 88 до 92 Гц. При этом в этой же полосе есть шумы, которые нужно отсеять. Например сигнал 90 Гц, шум - 91 Гц. При этом требования по отработки скорости изменения амплитуды - порядка 200 мс.

Данные с АЦП, fs до 200 кГц.

Пробовал два варианта:

1. БПФ - при разрешении по частоте один Гц - частота дискретизации, как я понимаю, должна быть равна окну БПФ, и как следствие страдает быстродействие (окно заполнится сигналом с новой амплитудой только через одну секунду).

2. Банк полосовых фильтров, но при задании полосы пропуская 1 Гц, постоянная времени тоже больше одной секунды.

Желательно отсеять шум отличный на 0.5 Гц от полезного сигнала.

Есть ли какие-нибудь варианты решения данной задачи?

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


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

Если я правильно понял, то здесь http://www.dsplib.ru/content/goertzelmod/goertzelmod.html  в формуле 17 как раз и написано, что при разнице между гармониками в 1 Гц, окно должно быть больше частоты дискретизации. 

Или я что то неверно понял?

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


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

6 hours ago, Unfog said:

2. Банк полосовых фильтров, но при задании полосы пропуская 1 Гц, постоянная времени тоже больше одной секунды. 

Тут ты запутался. Откуда взялось это больше одной секунды?

И зачем банк, если нужна только одна полоса?

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


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

Не знаю, как это правильно сделать, но можно наверное так: отфильтровать полосу 88-92Гц, сдвинуть её на 0, децимировать и сделать БПФ на полосе 0-4Гц с нужной дискретностью.

Наверняка есть какие-то эффективные алгоритмы вычисления спектра для полосового сигнала, спросите у гугла.

 

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


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

7 hours ago, rkit said:

Тут ты запутался. Откуда взялось это больше одной секунды?

И зачем банк, если нужна только одна полоса?

Чтобы выделить полезный сигнал. Он может быть с частотой от 88 до 92 Гц.

Более секунды получается, если делать фильтр, который пропускает полосу 1 Гц, с крутой АЧХ, чтобы соседние гармоники подавить.

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


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

Фит наименьшими квадратами f(t) = A*sin(w*t+phi), для нахождения A, w и phi,

если известно что частот только две, можно сразу искать A1*sin(w1*t+phi1) + A2*sin(w2*t+phi2)

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


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

36 minutes ago, _pv said:

Фит наименьшими квадратами f(t) = A*sin(w*t+phi), для нахождения A, w и phi,

если известно что частот только две, можно сразу искать A1*sin(w1*t+phi1) + A2*sin(w2*t+phi2)

Вы имеете в виду "Curve Fitting"?

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


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

14 hours ago, Unfog said:

Если я правильно понял, то здесь http://www.dsplib.ru/content/goertzelmod/goertzelmod.html  в формуле 17 как раз и написано, что при разнице между гармониками в 1 Гц, окно должно быть больше частоты дискретизации. 

Или я что то неверно понял?

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

при этом частоты синуса/косинуса не обязательно брать 88, 89,90 и 91 Гц, даже с окном в 200мс можно посчитать интегралы Фурье для произвольных частот 88.1, 88.3246, и 88.45 Гц. Герцель лишь способ вычисления этого интеграла без использования тригонометрических функций.

Другое дело что "ширина" каждого такого "отсчёта" будет 1/"размер окна". и даже идеальный синусоидальный сигнал с размеом окна 200мс, будет не узкой палкой в таком спектре, а иметь ширину 5Гц. тем не менее если сигнал/шум позволяет, положение максимума можно найти гораздо-гораздо точнее чем 5Гц.

 

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


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

5 hours ago, _pv said:

Другое дело что "ширина" каждого такого "отсчёта" будет 1/"размер окна". и даже идеальный синусоидальный сигнал с размеом окна 200мс, будет не узкой палкой в таком спектре, а иметь ширину 5Гц. тем не менее если сигнал/шум позволяет, положение максимума можно найти гораздо-гораздо точнее чем 5Гц.

 

Так у меня с этим, как я понял, и проблема. Шум может находиться рядом с сигналом. И если делать окно 200 мс, то на определения максимума будет влиять шум, т. к. он будет в полосе 5Гц.

По сути мне необходимо с окном 200 мс обеспечить ширину спектра каждого отсчета хотя бы 1 Гц, или эти принципиально невозможно?

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


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

dft.thumb.png.a4802b52ce6c37098ccf98bb6386c0f5.png

просто синус 90Гц и синус 90Гц + 0.1*Sin 91Гц. ну и плюс белого шума немного.

да, на спектре максимум просто немного съедет на 90.1Гц. простым Фурье за 200мс их не разрешить.

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

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


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

3 hours ago, _pv said:

простым Фурье за 200мс их не разрешить.

В смысле эта задача принципиально не может быть решена за 200 мс? Это для общего развития больше вопрос.

3 hours ago, _pv said:

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

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

Значит мне нужно только точно определить амплитуду полезного сигнала, частоту которого я знаю, шумы не интересуют.

1. Для этого использовать лучше FindFit?

2. Curve Fitting и есть FindFit?

3. Какой средой вы пользуетесь?

Изменено пользователем Unfog

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


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

Про среду - нашел.

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

 

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


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

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

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

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

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

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

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

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

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

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