Цифровой фильтр Бесселя

Все что касается фильтрации
Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

Ошибся я при определении полюсов :(
На картинке полюса фильтра Баттерворта 3 порядка Fs=0.1 с обычным z- преобразованием (справа) и с "модифицированным":
Бессель3.jpg

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

Re: Цифровой фильтр Бесселя

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

А как вы считали полюса?

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

Да, расчёт полюсов - это проблема... Матлаба у меня нет (и не предвидится). Программы для нахождения корней полинома - тоже нет пока.
Рассчитал модуль
при различных z (400x400 точек) и вывел c помощью Surfer 8.
Вот картинка из программы WinFilter:
Winfilter.JPG
Winfilter.JPG (6.94 КБ) 4736 просмотров

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

Вот коэффициенты фильтра Бесселя В,А:

Код: Выделить всё

3.987397909164430E+00
3.588658118247990E+01
1.435463247299190E+02
3.349414243698120E+02
5.024121365547180E+02
5.024121365547180E+02
3.349414243698120E+02
1.435463247299190E+02
3.588658118247990E+01
3.987397909164430E+00
1.000000000000000E+00
1.442174807700610E+01
7.332115147660880E+01
2.320730475966620E+02
4.315676713500860E+02
5.290883487097870E+02
4.304484187840970E+02
2.358556137427770E+02
7.943553298347330E+01
1.433616893431490E+01
Вот его ФЧХ:
Бесс3.JPG
Полюса:
Бесс3.jpg
Бесс3.jpg (62.11 КБ) 4733 просмотра
Как ещё на устойчивость проверить?

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

Re: Цифровой фильтр Бесселя

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

Есть подпрограмма нахождения собственных чисел матрицы? Если есть то поиск корней это собственные числа compain матрицы полинома.

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

Бахурин Сергей писал(а): Есть подпрограмма нахождения собственных чисел матрицы? Если есть то поиск корней это собственные числа compain матрицы полинома.
Да, такая подпрограмма есть. Только мне не понятно как по характеристическому уравнению матрицу восстановить :o
Пусть имеем уравнение 2 порядка
Коэффициенты матрицы находим из системы уравнений:


4 неизвестных - 2 уравнения. Маловато будет! (с) :D
Хотя решение существует:


Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

Рассмотрим ФНЧ Бесселя 2 порядка:


- частота среза
- частота среза определяется по уровню 3 дБ
С помощью матрицы z- преобразования найдём коэффициенты







Найдём полюсы H(z):




Теперь найдём матрицу, характеристическое уравнение которой имеет вид

или, другими словами - матрицу, собственные значения которой равны полюсам соответствующей передаточной характеристики H(z):
CodeCogsEqn(97).gif
CodeCogsEqn(97).gif (1.76 КБ) 4712 просмотров
Или:
CodeCogsEqn(100).gif
CodeCogsEqn(100).gif (1.98 КБ) 4712 просмотров
Но всё равно не понятно, как будет выглядеть эта матрица при произвольном порядке!

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

Бахурин Сергей писал(а): Есть подпрограмма нахождения собственных чисел матрицы? Если есть то поиск корней это собственные числа compain матрицы полинома.
Так что же такое compain матрица полинома???

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

После безуспешных попыток понять, что такое compain матрица полинома :D решил всё же воспользоваться Фортрановской библиотекой IMSL. Там аж два типа подпрограмм, одна из них по алгоритму Дженкинса-Трауба. Метод описан в книге Марпл мл. "Цифровой спектральный анализ и его приложения" стр.402
Вот такую картинку я уже приводил:
Бесс3.jpg
Бесс3.jpg (62.11 КБ) 4707 просмотров
Результаты работы подпрограммы DZPORC:

Код: Выделить всё

              Re					         Im				    |z|
   -0.300326288894250E+00    0.650276665521626E+00  z=  0.7162790E+00
   -0.300326288894250E+00   -0.650276665521626E+00  z=  0.7162790E+00
   -0.486416764364578E+00    0.682133098835512E+00  z=  0.8377988E+00
   -0.486416764364578E+00   -0.682133098835512E+00  z=  0.8377988E+00
   -0.592088833254236E+00    0.736475358699697E+00  z=  0.9449683E+00
   -0.592088833254236E+00   -0.736475358699697E+00  z=  0.9449683E+00
    0.200107429840802E+00    0.248442288827343E+01  z=  0.2492469E+01
    0.200107429840802E+00   -0.248442288827343E+01  z=  0.2492469E+01
    0.997283352872912E+01    0.000000000000000E+00  z=  0.9972834E+01
    0.000000000000000E+00    0.000000000000000E+00  z=  0.0000000E+00
Видно, что за пределами единичного круга лежат аж три полюса. Так как их действительная и мнимая часть (по модулю) больше 2, то я их просто "не заметил" :oops: ...А потом долго удивлялся тому, что фильтр неустойчив :D
Всё-таки расчёт полюсов удобнее. Да и, к примеру, можно разбивать "длинный" фильтр на каскады 2 порядка...

Аватара пользователя
Santik
Сообщения: 609
Зарегистрирован: 28 дек 2010, 08:04
Откуда: Мирный (Якутия)
Контактная информация:

Re: Цифровой фильтр Бесселя

Сообщение Santik »

Бахурин Сергей писал(а): Есть подпрограмма нахождения собственных чисел матрицы? Если есть то поиск корней это собственные числа compain матрицы полинома.
Может быть companion matrix - сопровождающая матрица?


Для ФНЧ Баттерворта 2-го порядка сопровождающая матрица имеет вид:

Теперь осталось определить, что лучше (быстрее/точнее) - находить собственные числа сопровождающей матрицы, или искать корни полинома. :D

Ответить