Коэффициенты БИХ фильтров

Все что касается фильтрации
Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1055
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Коэффициенты БИХ фильтров

Сообщение Бахурин Сергей »

Попробуйте задать вопрос на форуме по матлаб. Например вот на этом форуме. Лично я с симулинком не работал :roll: , предпочитаю программировать напрямую, чем двигать мышкой квадратики с неизвестным содержимым.

IceBeast
Сообщения: 10
Зарегистрирован: 17 мар 2011, 16:02

Re: Коэффициенты БИХ фильтров

Сообщение IceBeast »

Спасибо, сейчас посмотрю, я бы тоже программировал напрямую, но время пождимает - надо статью заканчивать! :) Хотя, имитационное моделирование во многих случаях позволяет гораздо проще решить задачи, которые традиционными методами потребуют уйму времени для разрешения. Я уже имел раньше дело с дискретно-событийным моделированием систем массового обслуживания в СИМ Arena. Сама то модель по структуре нетривиальна, а для её реализации (в этой СИМ есть функция вывода генерируемого в результате компиляции модели кода на языке, взятом там за основу - Siman, так там столько строчек кода, что на программирование и отладку чего-то аналогичного хотя бы в Си потребовалось бы очень много времени!). Для каждой задачи - свой инструмент, универсального инструмента не бывает. :)

IceBeast
Сообщения: 10
Зарегистрирован: 17 мар 2011, 16:02

Re: Коэффициенты БИХ фильтров

Сообщение IceBeast »

Сергей, а как в Вашей программе filter.exe задаётся частота дискретизации рассчитываемого цифрового фильтра? :?

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1055
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Коэффициенты БИХ фильтров

Сообщение Бахурин Сергей »

всегда равна 1 Гц.

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

Re: Коэффициенты БИХ фильтров

Сообщение Ivan Karamazov »

Итак, добрался до БИХ фильтров. и сразу вопросы:
(1) выше отмечалось, что программа "filter" считает/выводит значения во float (32 бита) (вообще-то результаты более похожи на double, но только с точностью до беск. 10-тичных дробей). Это (float) так?
(2) dsplib также "округляет" результаты?
[о да, я конечно все сам посчитаю -- со временем, но для начала очень хочется поиграть -- с тем, что уже вроде есть].
(3) вроде как из программы filter следует (возможно, плохо читал -- тут пишут, что это вроде-бы заложено в статьях), что оно считает фильры не выше 12-го порядка (мне, как всегда, не хватает чуть-чуть) -- это ограничение методики или реализации или вообще?
[ранее мне приходилось читать, что с IEEE double IIR-filter гарантированно(???? - И.К.) устойчиво работают до 50-го порядка (Баттерворд/оба Чебышева/неинтересный Лаплас), и заведомо разваливаются с 60(+)-го порядка. В сочетании с предупреждением "никогда не пользуйтесь КИХ более 10-го порядка. И 6-10-го порядка тоже только для (сомнительных) спец эффектов". Предупреждение "50-60-10" жило на сайте, которого, к сожалению, давно нет... ] -- т.е. это не вопрос, но если бы кто-либо фразу прокомментировал -- был бы признателен.
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1055
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Коэффициенты БИХ фильтров

Сообщение Бахурин Сергей »

(1) и (2) программа считает в double это 8 байт, но выводит стандартными сишными функциями поэтому текстовый результат соответствует float
(3) Исходя из того что билинейные преобразования используют перемножение полиномов неизбежно возникают ошибки округления. При увеличении порядка фильтра эти ошибки начинают сказываться на характеристиках фильтра. Поэтому рассчитать можно фильтр любого порядка, но он может оказаться неустойчивым ввиду того что ошибки округления приведут к выходу полюса за единичную окружность. Особенно это ярко видно на эллиптическом фильтре, когда все эллиптические функции рассчитываются итерационно с накоплением ошибок. Ограничение в программе фильтров 12 порядка искусственное, библиотека вполне способна рассчитывать фильтры и большего порядка. Кажется фильтр баттерворта до 20 порядка у меня рассчитывался без проблем.

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

Pavia
Сообщения: 38
Зарегистрирован: 25 апр 2011, 18:45

Re: Коэффициенты БИХ фильтров

Сообщение Pavia »

По поводу полиномов. Они тут не причем. Проблема в ограниченности чисел с плавающей точкой. Они имеют счётно число разрядов. А после каждой операции фактически происходит усечение. В результате чего ошибка может накапливаться. Причем такое можно встретить как при сложении 2-4 чисел ровно как и не встретить при сложении 1 миллиона чисел.

В одной книжке прочёл, там больше про аналоговые говорилось. Что фильтр можно разбивать на фильтр меньшего порядка это решает проблему с устойчивостью.

Также известно что изменив порядок суммирования можно решить проблему накапливания ошибки при суммирование чисел с плавающей точкой. Так что разбиение на фильтр более мелкого порядка справедливо и для цифровых фильтров.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1055
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Коэффициенты БИХ фильтров

Сообщение Бахурин Сергей »

Pavia писал(а):В одной книжке прочёл, там больше про аналоговые говорилось. Что фильтр можно разбивать на фильтр меньшего порядка это решает проблему с устойчивостью.
Разбиение на биквадратные блоки используют, но это лишь частично решает проблему устойчивости. При большом числе биквадратных блоков характеристики фильтра начинают искажаться, растут неравномерности в полосе пропускания и начинают плясать боковые лепестки. И хотя фильтр состоящий из 10 биквадратных блоков может оставаться устойчивым, его характеристики все равно будут хуже чем характеристики эллиптического фильтра 20-го порядка.

Ivan Karamazov
Сообщения: 89
Зарегистрирован: 28 окт 2010, 22:31
Откуда: Москва

Re: Коэффициенты БИХ фильтров

Сообщение Ivan Karamazov »

Дорвавшись до всего лишь "ready-to-use" БИХ (в смысле коэфф. из прог. "filter"), начинаю воспринимать себя не только идиотом, но даже и дебилом, соотв. прошу прощения за глупые вопросы.
Итак, то, что в filter Fд == 1 -- *это вроде как* не правильно, потому как период ЧХ фильтра д.б. равен Fд, что не согласуется с картинками, показывающими, очевидно, 1/2 периода, т.е. полается, что 1 == Fд/2?? (1)
Тогда еще вопрос:
В http://www.dsplib.ru/content/hilbertqua ... tquad.html (2) говорилось о полуполосовых фильтрах (по слабому моему разумению, имеющих полосу Fд/4) -- т.е. в терминах filter.exe -- 0.25 (?). НО. При этом получается лажа в смыле Гильберта (2) -- т.е. он работает в очень узком диапазоне частот -- как сверху, так и снизу.
Все начинает работать нормально, если фильтр собран из filter.exe с частотой среза в районе 0.5. Т.е. все сходилось бы к тезису (1), НО.
НО -- БИХ ФНЧ с частотой среза 0.5 (в смысле filter.exe) пропускает всю полосу 0..Fд/2, что показывают простейшие измерения. (!!!) Равно как 0.25 дает (измеренную) полосу 0..Fд/4, что согласуется с моим пониманием рисунков из (2), НО при этом режет все частоты как свеху, так и снизу, не пропуская даже речи.
В общем, на сравнительно ровном месте я запутался (да, неделя была тяжелая, но это меня не извиняет :oops: :oops: ). Очень прошу помочь разобраться.
PS: Я, конечно, своими руками сотворил за 2 пред. года не один КИХ фильтр, но там таких проблем не было -- т.е. как мне до сего дня казалось, с нормированными частотами я вполне сжился.
PPS: Я, конечно, сильно засиделся; так что повторить все для *своих* КИХ ФНЧ меня не хватит.
Если ваши решения вам нравятся -- это хорошие решения. И наоборот.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1055
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Коэффициенты БИХ фильтров

Сообщение Бахурин Сергей »

Вы правы в терминологии есть определенная путаница. При цифровой фильтрации считается что частота дискретизации равна 1 Гц или 2пи рад/c. Импульсные характеристики цифровых фильтров также дискретные с частотой дискретизации 1 Гц или 2пи рад/c. Соответственно частотные характеристики цифровых фильтров - 2пи периодические функции. Поскольку к-ты фильтра действительные, то частотные характеристика фильтра симметрична относительно нуля и тогда ее можно задавать в интервале от 0 до пи, а от пи до 2пи она также симметрично измениться. Задавать от 0 до пи неудобно потому что пи - иррационально и поэтому задают в интервале от 0 до 1. При этом частота среза 0.5 это полуполосный фильтр соответствует частоте 0.5пи рад/c или реальной частоте Fд/4 (поскольку 2 пи рад/c это Fд Гц, тогда 0.5 пи рад/c= Fд/4 ) НО ВАЖНО полоса фнч с частотой среза 0.5 будет равна пи рад/c потому что она симметрична относительна нуля и есть 0.5 пи в положительной области и 0.5 пи в отрицательной и полоса таким образом пи или Fд/2 (поэтому и полуполосный half-band)

Ответить