Jump to content

    
Unfog

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

Recommended Posts

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

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

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
6 hours ago, Unfog said:

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

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

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

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites
7 hours ago, rkit said:

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
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"?

Share this post


Link to post
Share on other sites
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Гц.

 

Share this post


Link to post
Share on other sites
5 hours ago, _pv said:

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

 

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

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

Share this post


Link to post
Share on other sites

dft.thumb.png.a4802b52ce6c37098ccf98bb6386c0f5.png

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

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

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

Share this post


Link to post
Share on other sites
3 hours ago, _pv said:

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

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

3 hours ago, _pv said:

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

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

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

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

2. Curve Fitting и есть FindFit?

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

Edited by Unfog

Share this post


Link to post
Share on other sites

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

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

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.