Jump to content

    
Sign in to follow this  
Quttar

Убрать из сигнала гармонику

Recommended Posts

Есть задание, в котором я в принципе разобрался, но есть один не ясный момент (наверняка самый главный)

 

Создать меандр с амплитудой 1 В, периодом 20/Fs и частотой дискретизации Fs. Предложить способ и реализовать удаление из сигнала только третьей гармоники. Отобразить результат во временной и частотной областях.

Вот создать меандр понятно как более менее. Так как любой сигнал можно представить в виде суммы синусоид, то такой сигнал состоит из гармоник. Но, вопрос в том, как найти эту третью гармонику и убрать ее? Желательно с помощью КИХ фильтра. 

Есть предположение, что частота первой гармоники будет равняться: f = Fs/20, а следовательно получается, что частота нужной гармоники будет равняться 3*f. 

Я не прошу решать задачу за меня, просто можете дать направление, в котором мыслить, чтобы решить эту задачу?

Share this post


Link to post
Share on other sites
Guest vitzap

ход ваших мыслей правильный. Далее вам нужно спроектировать необходимый фильтр (кстати, почему КИХ?). Если есть MATLAB, попробуйте инструмент fdatool - там все наглядно. Делаете фильтр, ослабляющий требуемую гармонику на необходимую величину (совсем убрать ее, естественно, не выйдет) и вносящий допустимое затухание в первую (конечно, она будет ослабляться, как же иначе). Потом пропускаете сигнал через фильтр. Если есть матлаб, найдите книгу Сергиенко про цифровую обработку сигналов, там было много примеров.

Edited by vitzap

Share this post


Link to post
Share on other sites

Я хочу разобраться именно в КИХ фильтре, и еще мы используем scilab, и даже если там есть похожая функция, то это немного не честно получается ее использовать. Можно сконструировать КИХ фильтр такой, чтобы в его АЧХ было сильное затухание в при частоте у 3 кГц?
То есть нужно задать коэффициенты y(k) = a1*x(k) +a2*x(k-1)+a3*x(k-2)+a4*x(k)+a5*x(k)...

Вот,как более менее точно найти эти коэффициенты? 

Edited by Quttar

Share this post


Link to post
Share on other sites
Guest vitzap
1 hour ago, Quttar said:

Я хочу разобраться именно в КИХ фильтре, и еще мы используем scilab, и даже если там есть похожая функция, то это немного не честно получается ее использовать. Можно сконструировать КИХ фильтр такой, чтобы в его АЧХ было сильное затухание в при частоте у 3 кГц?
То есть нужно задать коэффициенты y(k) = a1*x(k) +a2*x(k-1)+a3*x(k-2)+a4*x(k)+a5*x(k)...

Вот,как более менее точно найти эти коэффициенты? 

 

Есть разные методы. Ищите "методы синтеза ких фильтров".

Один из методова "на пальцах": то задаетесь требуемой АЧХ, делаете обратное преобразование от нее - получаете импульсную характеристику. В общем случае она бесконечная. Поскольку у нас должен получиться фильтр с конечной характеристикой, возьмем только N первых, где N-порядок фильтра. Это и будут коэффициенты a1, a2, .. aN. Найдем Фурье-образ этой импульсной характеристики, и у нас получится АЧХ получившегося фильтра. Она конечно, исказиться. Чтобы уменьшить искажения, коэффициенты фильтра придумали умножать на специальные полиномы - весовые окна. Для большего понимания читайте учебники.

Share this post


Link to post
Share on other sites
4 минуты назад, vitzap сказал:

Есть разные методы. Ищите "методы синтеза ких фильтров".

Один из методова "на пальцах": то задаетесь требуемой АЧХ, делаете обратное преобразование от нее - получаете импульсную характеристику. В общем случае она бесконечная. Поскольку у нас должен получиться фильтр с конечной характеристикой, возьмем только N первых, где N-порядок фильтра. Это и будут коэффициенты a1, a2, .. aN. Найдем Фурье-образ этой импульсной характеристики, и у нас получится АЧХ получившегося фильтра. Она конечно, исказиться. Чтобы уменьшить искажения, коэффициенты фильтра придумали умножать на специальные полиномы - весовые окна. Для большего понимания читайте учебники.

А при обратном преобразовании мы разве не получим комплексные отсчёты ? Или это не проблема?

Share this post


Link to post
Share on other sites
27 минут назад, vitzap сказал:

Есть разные методы. Ищите "методы синтеза ких фильтров".

Один из методова "на пальцах": то задаетесь требуемой АЧХ, делаете обратное преобразование от нее - получаете импульсную характеристику. В общем случае она бесконечная. Поскольку у нас должен получиться фильтр с конечной характеристикой, возьмем только N первых, где N-порядок фильтра. Это и будут коэффициенты a1, a2, .. aN. Найдем Фурье-образ этой импульсной характеристики, и у нас получится АЧХ получившегося фильтра. Она конечно, исказиться. Чтобы уменьшить искажения, коэффициенты фильтра придумали умножать на специальные полиномы - весовые окна. Для большего понимания читайте учебники.

Вот, это наверно способ, который мне подойдет) Собственно для данной задачи, по фильтрации гармоники 3 кГц, исходный (идеальный) АЧХ будет выглядеть так? Правильно, ли я понимаю, что нам достаточно ее строить для частот до половины частоты дискретизации?

 

 

фильтр.png

 

Edited by Quttar

Share this post


Link to post
Share on other sites
Guest vitzap

в идеале-да, но такой фильтр с КИХ-архитектурой будет не оооочень большого порядка. Но если в задании сказано КИХ, значит КИХ.

53 minutes ago, Lmx2315 said:

А при обратном преобразовании мы разве не получим комплексные отсчёты ? Или это не проблема? 

Можно взять исходную АЧХ действительную, т.е. симметричную относительно нулевой частоты. Можно отбросить комплексные составляющие. Вроде бы должно получиться одно и то же.

Share this post


Link to post
Share on other sites
19 минут назад, vitzap сказал:

Можно взять исходную АЧХ действительную, т.е. симметричную относительно нулевой частоты. Можно отбросить комплексные составляющие. Вроде бы должно получиться одно и то же.

Поэтому, человеку выше, надо его АЧХ для полной шкалы дискретизации строить а не для половины.

з.ы.

идеально конечно в octave накидать примерчик и играться с полосами, окнами и т.д.

afh_428875_432000_435125_128_v1.txt

afh_428875_432000_435125_128_v1_etalon.txt

fir_compes_achh_v1.m

 

Я как-то считал корректирующий фильтр КИХ для характеристики.

В первом файле измеренная АЧХ  , во втором эталонная. Код ищет компенсационную характеристику и считает коэффициенты.

Share this post


Link to post
Share on other sites
2 часа назад, vitzap сказал:

Есть разные методы. Ищите "методы синтеза ких фильтров".

Один из методова "на пальцах": то задаетесь требуемой АЧХ, делаете обратное преобразование от нее - получаете импульсную характеристику. В общем случае она бесконечная. Поскольку у нас должен получиться фильтр с конечной характеристикой, возьмем только N первых, где N-порядок фильтра. Это и будут коэффициенты a1, a2, .. aN. Найдем Фурье-образ этой импульсной характеристики, и у нас получится АЧХ получившегося фильтра. Она конечно, исказиться. Чтобы уменьшить искажения, коэффициенты фильтра придумали умножать на специальные полиномы - весовые окна. Для большего понимания читайте учебники.

Я сделал по данному методу, импульсная характеристика получилась с комплексными числами. Отбросил мнимую часть. И по построенной импульсной характеристике нашел ее АЧХ. Но на АЧХ характеристика, там где изначально принимала 0, теперь принимает 0.5. Пробовал увеличивать полосу заграждения, но видимо, нужно что-то другое исправить. Не подскажите, в чем может быть тут проблема?

ачх.png

Edited by Quttar

Share this post


Link to post
Share on other sites
Guest vitzap

Не должно так быть. Для начала строчка 73-должно быть ifft, и почему второй параметр - количество точек = 1? Это вы получите импульсную характеристику вашего идеального фильтра. Ограничьте ее длину (обнулите массив дальше N-го коэффициента) и сделайте прямое fft. Потом "поиграйте" с окнами, какое даст лучший результат.

 

Скоро сессия?

Edited by vitzap

Share this post


Link to post
Share on other sites
2 минуты назад, vitzap сказал:

Не должно так быть. Для начала строчка 73-должно быть ifft, и почему второй параметр - количество точек = 1? Это вы получите импульсную характеристику вашего идеального фильтра. Ограничьте ее длину (обнулите массив дальше N-го коэффициента) и сделайте прямое fft. Потом "поиграйте" с окнами, какое даст лучший результат.

 

Скоро сессия?

 

У меня по этому предмету нет сессии

Цифра 1 как я понимаю говорит о том, что нужно сделать обратное преобразование фурье

Edited by Quttar

Share this post


Link to post
Share on other sites

Может быть ошибка в самом начале решения задачи? Смотрите есть такой сигнал, длительностью 120 отсчетов. Рядом с ним приведен его частотный спектр.

image.png

Я строю АЧХ, которая мне нужна. Правильно ли, что я беру в ней 4500 отсчетов?

Edited by Quttar

Share this post


Link to post
Share on other sites

Что-бы загородить частоту 1350 (частота 3 гармоники) нужно занулить отсчеты например с 1300 по 1400? По идее другие гармоники не должны быть задеты.

image.png

Я беру столько отсчетов, так как проще понять какие отсчеты на АЧХ занулить. Хотя согласен, что может быть это перебор.

Вот так выглядит АЧХ данного фильтра:

image.png.def91ecebbddb3cb6a0dbb5ecfe4f0ce.png

Edited by Quttar

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.

Sign in to follow this