Цифровой фильтр Бесселя
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Цифровой фильтр Бесселя
Ошибся я при определении полюсов
На картинке полюса фильтра Баттерворта 3 порядка Fs=0.1 с обычным z- преобразованием (справа) и с "модифицированным":
На картинке полюса фильтра Баттерворта 3 порядка Fs=0.1 с обычным z- преобразованием (справа) и с "модифицированным":
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Цифровой фильтр Бесселя
А как вы считали полюса?
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Цифровой фильтр Бесселя
Да, расчёт полюсов - это проблема... Матлаба у меня нет (и не предвидится). Программы для нахождения корней полинома - тоже нет пока.
Рассчитал модуль
при различных z (400x400 точек) и вывел c помощью Surfer 8.
Вот картинка из программы WinFilter:
Рассчитал модуль
при различных z (400x400 точек) и вывел c помощью Surfer 8.
Вот картинка из программы WinFilter:
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Цифровой фильтр Бесселя
Вот коэффициенты фильтра Бесселя В,А:
Вот его ФЧХ:
Полюса:
Как ещё на устойчивость проверить?
Код: Выделить всё
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
- Бахурин Сергей
- Администратор
- Сообщения: 1114
- Зарегистрирован: 05 окт 2010, 19:55
- Контактная информация:
Re: Цифровой фильтр Бесселя
Есть подпрограмма нахождения собственных чисел матрицы? Если есть то поиск корней это собственные числа compain матрицы полинома.
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Цифровой фильтр Бесселя
Да, такая подпрограмма есть. Только мне не понятно как по характеристическому уравнению матрицу восстановить
Пусть имеем уравнение 2 порядка
Коэффициенты матрицы находим из системы уравнений:
4 неизвестных - 2 уравнения. Маловато будет! (с)
Хотя решение существует:
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Цифровой фильтр Бесселя
Рассмотрим ФНЧ Бесселя 2 порядка:
- частота среза
- частота среза определяется по уровню 3 дБ
С помощью матрицы z- преобразования найдём коэффициенты
Найдём полюсы H(z):
Теперь найдём матрицу, характеристическое уравнение которой имеет вид
или, другими словами - матрицу, собственные значения которой равны полюсам соответствующей передаточной характеристики H(z): Или: Но всё равно не понятно, как будет выглядеть эта матрица при произвольном порядке!
- частота среза
- частота среза определяется по уровню 3 дБ
С помощью матрицы z- преобразования найдём коэффициенты
Найдём полюсы H(z):
Теперь найдём матрицу, характеристическое уравнение которой имеет вид
или, другими словами - матрицу, собственные значения которой равны полюсам соответствующей передаточной характеристики H(z): Или: Но всё равно не понятно, как будет выглядеть эта матрица при произвольном порядке!
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Цифровой фильтр Бесселя
После безуспешных попыток понять, что такое compain матрица полинома решил всё же воспользоваться Фортрановской библиотекой IMSL. Там аж два типа подпрограмм, одна из них по алгоритму Дженкинса-Трауба. Метод описан в книге Марпл мл. "Цифровой спектральный анализ и его приложения" стр.402
Вот такую картинку я уже приводил: Результаты работы подпрограммы DZPORC:
Видно, что за пределами единичного круга лежат аж три полюса. Так как их действительная и мнимая часть (по модулю) больше 2, то я их просто "не заметил" ...А потом долго удивлялся тому, что фильтр неустойчив
Всё-таки расчёт полюсов удобнее. Да и, к примеру, можно разбивать "длинный" фильтр на каскады 2 порядка...
Вот такую картинку я уже приводил: Результаты работы подпрограммы 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 порядка...
- Santik
- Сообщения: 609
- Зарегистрирован: 28 дек 2010, 08:04
- Откуда: Мирный (Якутия)
- Контактная информация:
Re: Цифровой фильтр Бесселя
Может быть companion matrix - сопровождающая матрица?
Для ФНЧ Баттерворта 2-го порядка сопровождающая матрица имеет вид:
Теперь осталось определить, что лучше (быстрее/точнее) - находить собственные числа сопровождающей матрицы, или искать корни полинома.