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

 
 
> fdatool в MATLab, трабла, помогите разобраться
KolyanV
сообщение Feb 12 2006, 18:35
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 1-06-05
Пользователь №: 5 621



Здравствуйте!
Использовал ранее утилиту fdatool в MATLAB 6.5 для рассчетов FIR фильтров. Тут понадобилось рассчитать несколько IIR (БИХ) фильтров. Взял для примера фильтр Баттервуорта. Задал параметры, указал порядок. Сгенерировал фильтр. Включил рассчет квантования, в дополнительных настройках квантования включил нормализацию Numerator и Denominator так, чтобы они не были больше 1.0.
Пересчитал фильтр. По АЧХ фильтр подошел, рассчитаные коэффициенты я подставил в код своей программы. При прогоне фильтра на тестовом сигнале с плавнорастущей частотой тона с 20Гц до 10кГц оказалось, что общий уровень выходного сигнала выше входного. Причем, уровень растет пропорционально количеству секций фильтра и рост составляет около 4.2 дБ на секцию фильтра. Т.е для фильтра 20-го порядка (10 секций), рост уровня состовляет более 42 дБ. При работе с FIR фильтрами рассчитанными в MATLAB-е сподобными проблемами не сталкивался. Сначала грешил на свой алгоритм фильтрации. Для теста взял коэффициены вычисленные с помощью утилиты CIIRF1.EXE (http://www.rid.mv.ru/iir/iir.htm). По коэффициентам выданными этой программой, выходной сигнал после обработки моим алгоритмом фильтрации получился совершенно корректным (без общего поднятия/опускания уровня) и соответсвовал заданной АЧХ. Кроме того, меня настораживает тот факт, что для фильтра Баттервуорта, независимо от его порядка и других параметров Numerator всех секций фильтра равны (0.25 0.50 0.25)
Пример:
Numerator
QuantizedCoefficients{1}{1} ReferenceCoefficients{1}{1}
(1) 0.250000000000000 0.250000000000000000
(2) 0.500000000000000 0.500000000000000000
(3) 0.250000000000000 0.250000000000000000
Повторюсь - коффициенты нормализуются к диапазону [-1;1]

Подскажите, в чем проблема? Кто сталкивался с подобным? Как рассчитать "правильные" коэфициенты?

P.S: Для режима БЕЗ нормализации до [-1;1] с параметрами квантования коэффициентов [16 14] картина абсолютна та же.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
KolyanV
сообщение Feb 16 2006, 06:45
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 91
Регистрация: 1-06-05
Пользователь №: 5 621



Неужели никто не сталкивался с таким и не использовал IIR фильтры рассчитанные в MatLab в своих программах ?
Go to the top of the page
 
+Quote Post
subver
сообщение Feb 16 2006, 07:08
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 185
Регистрация: 4-06-05
Из: Омск
Пользователь №: 5 726



Цитата(KolyanV @ Feb 16 2006, 12:45) *
Неужели никто не сталкивался с таким и не использовал IIR фильтры рассчитанные в MatLab в своих программах ?


Именно из-за масштабирующих множителей и возникают проблемы при квантовании БИХ фильтров.
Если делать вычисления с плавающей точкой, то фильтр будет вести себя так же как и расчитанный.
Как вариант можно попробовать использовать КИХ децимацию с последующей интерполяцией.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 25th July 2025 - 01:15
Рейтинг@Mail.ru


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