Пример. Проектирование БИХ-фильтра (фильтра с бесконечной импульсной характеристикой)
Используйте функции
bessel, butter, cheby1, cheby2,
iirlow, iirhigh, iirpass и
iirstop, чтобы создать коэффициенты для аналогового фильтра нижних частот данного типа. Используйте коэффициенты как аргументы одной из функций iir, которые масштабируют и выполняют билинейное преобразование, чтобы создать требуемую частотную характеристику.
• Для фильтров верхних и нижних частот с четным порядком N все срезы являются срезами второго порядка с тремя коэффициентами в каждом столбце. Если порядок нечетный, последний срез будет срезом первого порядка. Для полосовых и заградительных фильтров преобразование в цифровой фильтр продублирует порядок каждого среза.
• Функции
gain и
response принимают массивы коэффициентов в той форме, в какой они были созданы этими функциями. Комплексное усиление находится перемножением усилений срезов, а отклик — передачей отклика каждого среза в следующий срез.
• Эти функции реализуют алгоритмы, описанные в главе 7 книги "Signal Processing Algorithms" (Алгоритмы обработки сигналов), Samuel Stearns and Ruth David (Prentice-Hall, Inc.).
Фильтр нижних частот Чебышева I типа
1. Определите порядок, параметр пульсации и частоту среза.
2. Используйте функции iirlow и cheby1, чтобы создать коэффициенты фильтра.
Фильтр A имеет четыре квадратичных среза.
3. Постройте график величины усиления и используйте горизонтальный маркер, чтобы отметить уровень пульсации.
Поскольку функция преобразования дана как произведение квадратичных множителей, отображение полюсов на комплексной плоскости не требует дополнительных разъяснений.
4. Найдите комплексные корни каждого коэффициента делителя.
Полюсами функции преобразования фильтра A являются корни квадратных уравнений с коэффициентами, приведенными в нечетных столбцах A, с коэффициентом квадратичного члена впереди.
5. Найдите один корень для каждого коэффициента делителя.
6. Введите сопряженные корни.
7. Покажите полюса функции преобразования и отобразите их на комплексной плоскости. Добавьте единичную окружность для сравнения.
На графике полюсов видно, что все восемь полюсов находятся внутри единичной окружности, поэтому фильтр, как и требуется, устойчив.
8. Используйте функцию
max, чтобы численно проверить, что все восемь полюсов лежат внутри единичной окружности.
9. Примените функцию
response и постройте график импульсной характеристики фильтра A. Придайте ему вектор длины 1, представляющий единичный импульс как первый аргумент.
Хотя длина характеристики бесконечна, он снижается почти до 0 после первых 80 членов. Условие устойчивости гарантирует ограниченность суммы абсолютных значений отклика.
Фильтр нижних частот Чебышева II типа
1. Задайте параметры для фильтра Чебышева II типа.
2. Используйте функцию
tan, чтобы вычислить масштаб.
Теоретическую основу этих вычислений см. в руководстве Стирнса и Дэвида; полученное число всегда будет больше 1.
3. Используйте функции iirlow и cheby2, чтобы рассчитать коэффициенты для низкочастотного БИХ-фильтра пятого порядка с частотой среза f=pass.
Матрица коэффициентов имеет два квадратичных среза и один линейный срез.
4. Используйте функцию gain, чтобы вычислить усиление на каждой частоте, а затем постройте частотную характеристику. Используйте маркеры, чтобы показать частоты pass и stop, а также инверсию уровня затухания.
График отклика показывает точность соответствия проектным критериям. Маркеры помогают увидеть, что полоса задерживания начинается в нужном месте (пересечение линий stop и 1/atten) и что полоса пропускания заканчивается справа от частоты среза.
5. Используйте функции iirlow и cheby2, чтобы повторить вышеупомянутую конструкцию при использовании большего затухания.
Большие величины затухания требует фильтров более высокого порядка, чтобы сократить переходную полосу до требуемой ширины. Попробуйте фильтры пятого и восьмого порядка и сравните результаты.
6. Постройте график усиления фильтра пятого порядка в дБ. Используйте маркеры, чтобы отметить частоту пропускания и требуемое затухание 30 дБ.
7. Постройте график усиления фильтра восьмого порядка в дБ. Используйте маркеры, чтобы отметить частоту пропускания и требуемое затухание 30 дБ.
Тогда как усиление ниже линии -30 дБ одинаково для обоих фильтров при значении частоты, близком к конечной частоте, усиление фильтра восьмого порядка остается плоским выше частоты среза. Это означает, что фильтр восьмого порядка должен достигать ожидаемой величины затухания, равной 1000.
Вычисление коэффициента масштабирования
Следующие уравнения показывают определение коэффициента масштабирования для фильтров верхних частот, полосовых пропускающих фильтров и заградительных фильтров.
• Фильтр верхних частот:
• Полосовой пропускающий фильтр:
Параметры pass1 и pass2 представляют нижний и верхний края полосы пропускания, а параметры stop1 и stop2 представляют края двух полос задерживания.
• Заградительный фильтр:
Параметры pass1 и pass2 представляют края двух полос пропускания, а параметры stop1 и stop2 представляют нижний и верхний края полосы задерживания.
1. Определите параметры для полосового фильтра:
2. Вычислите масштаб полосового фильтра, используя вышеупомянутые параметры.
3. Вычислите коэффициенты для приведенного выше полосового фильтра.
4. Постройте график отклика в дБ и покажите маркеры задерживания и пропускания.
Правая граница полосы подавления находится точно в нужном расположении, но левая граница находится выше целевого значения частоты. Это означает, что данный переход уже, чем требуется.
Фильтр нижних частот Бесселя
Фильтр Бесселя представляет собой единый раздел.
1. Задайте параметры фильтра Бесселя.
Параметр масштаба может использоваться для управления усилением при частоте среза.
2. Используйте функцию bessel, чтобы вычислить коэффициенты фильтра Бесселя.
3. Распечатайте усиление и покажите усиление на частоте среза.
4. Пожертвуйте нижним усилением на частоте среза, чтобы увеличить затухание в полосе подавления с помощью коэффициента масштабирования.
R является аналоговой функцией преобразования, соответствующей аналоговым коэффициентам B1.
5. Используйте функцию
root с начальным приближением 1, чтобы найти точку, в которой аналоговая функция преобразования R равна 0.8 при частоте среза.
Маркер масштаба пересекает кривую усиления в точке 0.8.
Начальное приближение должно быть положительным числом, чтобы оно приводило к положительному значению масштаба.
6. Вычислите заново коэффициенты цифрового фильтра с помощью рассчитанного ранее коэффициента масштабирования.
7. Распечатайте новую частотную характеристику и покажите усиление на частоте среза.
График показывает, что у новой частотной характеристики есть резкий переход к нулю за частотой среза. Использование коэффициента масштабирования приводит к росту затухания в полосе задерживания.
Полосовой фильтр, заградительный фильтр и фильтр верхних частот Баттерворта
Порядок входных коэффициентов удваивается с помощью функций iirpass и iirstop, поэтому аналоговые коэффициенты четвертого порядка дают фильтр восьмого порядка.
Полосовой фильтр Баттерворта
1. Задайте параметры фильтра.
2. Вычислите коэффициенты.
3. Постройте график отклика. Используйте вертикальные маркеры, чтобы показать низкие и высокие частоты.
Отклик показывает, что частотам между f_lo и f_hi разрешено пропускание. Все другие отфильтровываются.
Заградительный фильтр Баттерворта
1. Задайте порядок фильтра.
2. Используйте функции iirstop и butter, чтобы вычислить коэффициенты.
3. Постройте график отклика. Используйте вертикальные маркеры, чтобы показать низкие и высокие частоты.
Отклик показывает, что частотам между f_lo и f_hi запрещено пропускание. Всем другим пропускание разрешено.
Фильтр верхних частот Баттерворта
1. Задайте порядок фильтра.
2. Используйте функции iirhigh и butter, чтобы вычислить коэффициенты.
В отличие от функций iirpass и iirstop функция iirhigh не удваивает порядок входных коэффициентов. Поэтому значение порядка передано в функцию butter в неизменном виде.
3. Постройте график отклика. Используйте вертикальный маркер, чтобы показать высокую частоту.
Отклик показывает, что частотам выше f_hi пропускание разрешено. Все другие отфильтровываются.