реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Фильтр на основе частотной выборки по Р. Лайонсу, не могу понять почему ...
otshelnik86
сообщение Nov 3 2008, 09:26
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 13-03-07
Из: Беларусь, Минск
Пользователь №: 26 099



синтезировал на С++ фильтр на основе частотной выборки (ФОЧВ) типа IV по Р.Лайонсу. Это КИХ фильтр на основе гребенчатого фильтра и набора резонаторов. Написано, что его ИХ имеет длину N.
Подаю на вход одну единицу и (N - 1) нулей, т.е. цифровую дельта-функцию. Т.о. на выходе должна быть ИХ фильтра. Получаю ее, беру ДПФ и получаю спектр. Предварительно, чтобы получить более точный спектр добавляю после ИХ 3*N нулей. В результате получается спектр такой, который я задавал сразу. Т.е. меня это на 100% удовлетворяет.
А потом возникает такая ситуация... Когда подаю на вход одну единицу и, к примеру, 3*N нулей, то на выходе получаю ПОВТОРЯЮЩУЮСЯ несколько раз ИХ фильтра - т.е периодический сигнал. Почему так? Ведь отклик должен затухнуть. 01.gif

И еще такой вопрос. В книге приводится формула, где отсутствует в знаменателе гребенчатого фильтра N. Надо ли еще делить выходной отсчет на N? sad.gif
P.S. использую значение r<1 для устойчивости фильтра. 05.gif


--------------------
"Правильный путь один - СВОЙ"
"Счастье - это не станция назначения, а способ путешествовать."
Go to the top of the page
 
+Quote Post
Самурай
сообщение Nov 3 2008, 13:11
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(otshelnik86 @ Nov 3 2008, 12:26) *
синтезировал на С++ фильтр на основе частотной выборки (ФОЧВ) типа IV по Р.Лайонсу. Это КИХ фильтр на основе гребенчатого фильтра и набора резонаторов. Написано, что его ИХ имеет длину N.
Подаю на вход одну единицу и (N - 1) нулей, т.е. цифровую дельта-функцию. Т.о. на выходе должна быть ИХ фильтра. Получаю ее, беру ДПФ и получаю спектр. Предварительно, чтобы получить более точный спектр добавляю после ИХ 3*N нулей. В результате получается спектр такой, который я задавал сразу. Т.е. меня это на 100% удовлетворяет.
А потом возникает такая ситуация... Когда подаю на вход одну единицу и, к примеру, 3*N нулей, то на выходе получаю ПОВТОРЯЮЩУЮСЯ несколько раз ИХ фильтра - т.е периодический сигнал. Почему так? Ведь отклик должен затухнуть. 01.gif

И еще такой вопрос. В книге приводится формула, где отсутствует в знаменателе гребенчатого фильтра N. Надо ли еще делить выходной отсчет на N? sad.gif
P.S. использую значение r<1 для устойчивости фильтра. 05.gif


Так как Ричарда Лайонса книги у меня нет, то могу только предположить, что речь идет о следующих фильтрах:

Hk(z) = [1 - (z^-N)]/[1 - 2*r*cos(2*pi*k/N)*(z^-1) +r*r*(z^-2)] (1)

Действительно, суммируя (с весовыми коэффициентами) выходы нескольких таких фильтров можно получить АЧХ в принципе любого вида.
Но, если r<1 (как в Вашем случае), то каждый из фильтров (1) будет по сути БИХ фильтром, так как полюс знаменателя не компенсирует ноль числителя (все нули располагаются на единичной окружности на z плоскости, а все полюса располагаются на окружности радиуса r).
В этом случае, если на вход такого фильтра подать цифровую дельта-функцию, то выходом фильтра будет бесконечная последовательность состоящая из коэффициентов ИХ фильтра.

А теперь можно попытаться объяснить, почему мы видим периодическое повторение ИХ фильтра (если я прав и если это не банальная ошибка в программеsmile.gif, то ИХ должна повториться дважды, причем второй раз с большим затуханием).

Представим фильтр (1) в виде последовательного соединения двух фильтров:
- гребенчатого фильтра Hg(z) = 1 - (z^-N) (2)
- резонатора Hr(z) = 1 - 2*r*cos(2*pi*k/N)*(z^-1) +r*r*(z^-2) (3)

Импульсная характеристика фильтра (2) будет представлять собой два единичных всплеска с амплитудой +1 и -1 разделенных интервалом в N отсчетов.
Импульсная характеристика (бесконечная) фильтра (3) это отсчеты из затухающей косинусоиды.

Таким образом, в момент времени 0 мы возбуждаем резонатор (3) единичным (положительным) импульсом. На выходе резонатора появляется затухающая косинусоида. Далее, через N отсчетов мы еще раз возбуждаем резонатор единичным (отрицательным) импульсом, на выходе резонатора снова появляется затухающая последовательность из отсчетов косинусоиды, но уже в противофазе.

Если r=1(нет затухания резонатора) то две косинусоиды начиная с момента N полностью компенсируют друг друга и на выходе фильтра с этого момента времени будут идти нули, т.е. ИХ в этом случае, это ИХ КИХ фильтра.

На рисунках показана ИХ для r=0.999, r=0.95 и r=0.9 (N=32):
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Самурай
сообщение Nov 3 2008, 14:42
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Так, книгу нашелsmile.gif Прочтение книги показало, что я чуть-чуть ошибсяsmile.gif. Два разаsmile.gif.
Формулу (1) надо переписать несколько по-другому, я малость поспешил в первый раз:

Hk(z) = [1 - r^N*(z^-N)]*[1 - r^2*(z^-2)]/[1 - 2*r*cos(2*pi*k/N)*(z^-1) +r*r*(z^-2)] (1.1)

Тем самым мы размещаем нули не на единичной окружности, а на окружности радиуса r^N. В этом случае у нас получается именно КИХ фильтр, так как полюса полностью компенсируются нулями. Естественно, это только для идеального случая, когда нет округления результата и все коэффициенты абсолютно точные. ИХ каждого фильтра в этом случае как раз и будет представлять собой N отсчетов затухающей синусоиды (косинусоиды).

В общем смотрите, похоже у Вас все-таки где-то ошибка (очепятка) smile.gif.

Да, еще один момент, если r<1 то каждый фильтр (1) или (1.1) уже не будет обладать линейной ФЧХ.
Go to the top of the page
 
+Quote Post
otshelnik86
сообщение Nov 3 2008, 22:28
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 13-03-07
Из: Беларусь, Минск
Пользователь №: 26 099



Цитата(Самурай @ Nov 3 2008, 17:42) *
Так, книгу нашелsmile.gif Прочтение книги показало, что я чуть-чуть ошибсяsmile.gif. Два разаsmile.gif.
Формулу (1) надо переписать несколько по-другому, я малость поспешил в первый раз:

Hk(z) = [1 - r^N*(z^-N)]*[1 - r^2*(z^-2)]/[1 - 2*r*cos(2*pi*k/N)*(z^-1) +r*r*(z^-2)] (1.1)

Тем самым мы размещаем нули не на единичной окружности, а на окружности радиуса r^N. В этом случае у нас получается именно КИХ фильтр, так как полюса полностью компенсируются нулями. Естественно, это только для идеального случая, когда нет округления результата и все коэффициенты абсолютно точные. ИХ каждого фильтра в этом случае как раз и будет представлять собой N отсчетов затухающей синусоиды (косинусоиды).

В общем смотрите, похоже у Вас все-таки где-то ошибка (очепятка) smile.gif.

Да, еще один момент, если r<1 то каждый фильтр (1) или (1.1) уже не будет обладать линейной ФЧХ.


ДА-ДА-ДА и еще раз ДА!!! Спасибо вам, что вы обратили на сообщение внимание. Приведенные графики соответсвуют некоторым моим. Я снял сигнал после гребенчатого фильтра и получил тоже две дельта функции, одна из которых по сути возбуждает резонаторы, а другая - глушит их. Потом снял графики после резонатора для ФНЧ - и получил такой же график, который вы привели на первом скрине. Но вот для ФВЧ и ПФ - почему-то наоборот - вначале идет синусоида с меньшей амплитудой, затем с большей...
Насчет линейной фазовой характеристикой - ну, тут уже ничего не попишешь, жизнь есть жизнь - не все карты козырные))). Я беру r = 1 - 10^-12.

Очень вам благодарен за ваше терпение и потраченное время. Буду искать свою ошибку. Может чего и получится. Интересно, может ли она быть в индексации, т.е. например, не учел какой-то резонатор (крайний), или наоборот - лишний добавил. В общем, большое вам спасибо, буду пробовать! beer.gif

P.S. Приятно иметь единомышленников. a14.gif


--------------------
"Правильный путь один - СВОЙ"
"Счастье - это не станция назначения, а способ путешествовать."
Go to the top of the page
 
+Quote Post
otshelnik86
сообщение Nov 4 2008, 16:19
Сообщение #5


Участник
*

Группа: Новичок
Сообщений: 29
Регистрация: 13-03-07
Из: Беларусь, Минск
Пользователь №: 26 099



нашел ошибку - действительно в индексации. Некорректно аппроксимировал АЧХ...


--------------------
"Правильный путь один - СВОЙ"
"Счастье - это не станция назначения, а способ путешествовать."
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2024 - 05:10
Рейтинг@Mail.ru


Страница сгенерированна за 0.01467 секунд с 7
ELECTRONIX ©2004-2016