ellip
Расчет эллиптического фильтра.
| Библиотека |
|
Синтаксис
Вызов функции
-
b, a = ellip(n, Rp, Rs, Wp)— проектирует цифровой эллиптический фильтр нижних частотn-го порядка с нормированной граничной частотой полосы пропусканияWp. Результирующий фильтр имеет размер пульсаций в полосе пропусканияRpдБ и затухание в полосе задерживанияRsдБ относительно пикового значения в полосе пропускания. Функцияellipвозвращает коэффициенты числителя и знаменателя передаточной функции фильтра.
-
A, B, C, D = ellip(___; nout=4)— проектирует цифровой эллиптический фильтр и возвращает матрицыA, B, C, D, которые определяют его представление в пространстве состояний.
-
___ = ellip(___, "s"; nout)— проектирует аналоговый эллиптический фильтр, используя любой из входных или выходных аргументов в предыдущих синтаксисах. Аргументnoutпоказывает, сколько выходных аргументов вернет функция. Если аргументnoutне указан, то функция произведет расчет только для двух выходных аргументов.
Аргументы
Входные аргументы
#
n —
порядок фильтра
скаляр
Details
Порядок фильтра, заданный как целочисленный скаляр, меньший или равный 500. Для полосовых и режекторных фильтров n представляет собой половину порядка фильтра.
| Типы данных |
|
#
Rp —
размер пульсаций в полосе пропускания в дБ
положительный скаляр
Details
Размер пульсаций в полосе пропускания, заданный как положительный скаляр в дБ.
Если значение выражено в линейных единицах, вы можете перевести его в дБ, используя формулу Rp .
| Типы данных |
|
#
Rs —
затухание в полосе задерживания в дБ
положительный скаляр
Details
Затухание в полосе задерживания относительно пикового значения в полосе пропускания, заданное как положительный скаляр в дБ.
Если значение выражено в линейных единицах, вы можете перевести его в дБ, используя формулу Rs .
| Типы данных |
|
#
Wp —
граничная частота полосы пропускания
скаляр | двухэлементный вектор
Details
Граничная частота полосы пропускания, заданная как скаляр или двухэлементный вектор. Граничная частота полосы пропускания — это частота, на которой амплитудно-частотная характеристика фильтра равна −Rp в дБ. Меньшие значения пульсаций АЧХ в полосе пропускания Rp и большие значения затухания в полосе задерживания Rs приводят к расширению полосы пропускания.
-
Если
Wp— скаляр, тоellipпроектирует фильтр нижних или верхних частот с граничной частотойWp.Если
Wp— двухэлементный вектор[w1 w2], гдеw1 < w2, тоellipпроектирует полосовой или режекторный фильтр с нижней граничной частотойw1и верхней граничной частотойw2. -
Для цифровых фильтров граничные частоты полосы пропускания должны лежать в диапазоне от
0до1, где1соответствует частоте Найквиста — половине частоты дискретизации или рад/отсчет.Для аналоговых фильтров граничные частоты полосы пропускания должны быть выражены в рад/с и могут принимать любое положительное значение.
| Типы данных |
|
#
ftype —
тип фильтра
"low" | "bandpass" | "high" | "stop"
Details
Тип фильтра, заданный как:
-
"low"— фильтр низких частот с граничной частотой полосы пропусканияWp. Это значение используется по умолчанию для скалярногоWp; -
"high"— фильтр высоких частот с граничной частотой полосы пропусканияWp; -
"bandpass"— полосовой фильтр2nпорядка, еслиWp— двухэлементный вектор. Это значение используется по умолчанию, когдаWpзадан как двухэлементный вектор; -
"stop"— режекторный (заграждающий) фильтр2nпорядка, еслиWp— двухэлементный вектор.
| Типы данных |
|
Входные аргументы «имя-значение»
#
nout —
количество выходных аргументов
2 (по умолчанию) | 3 | 4
Details
Количество выходных аргументов, заданное как 2, 3 или 4. Если аргумент nout не задан, функция по умолчанию вернет два выходных аргумента.
Выходные аргументы
#
b, a —
коэффициенты передаточной функции
векторы-строки
Details
Коэффициенты передаточной функции фильтра, возвращаемые в виде векторов-строк. При заданном порядке фильтра n функция возвращает b и a с r отсчетами, где r = n + 1 для фильтров нижних и верхних частот и r = 2 * n + 1 для полосовых и режекторных фильтров.
Передаточная функция выражается через и :
-
для цифровых фильтров
-
для аналоговых фильтров
| Типы данных |
|
#
z, p, k —
нули, полюса и усиление
векторы-столбцы и скаляр
Details
Нули, полюса и коэффициент усиления фильтра, возвращаемые в виде двух векторов-столбцов и скаляра. При заданном порядке фильтра n функция возвращает z и p с r отсчетами, где r = n для фильтров нижних и верхних частот и r = 2 * n для полосовых и режекторных фильтров.
Передаточная функция выражается через , и :
-
для цифровых фильтров
-
для аналоговых фильтров
| Типы данных |
|
#
A, B, C, D —
представление фильтра в пространстве состояний
матрицы
Details
Представление фильтра в пространстве состояний, возвращаемое в виде матриц. Если r = n для фильтров нижних и верхних частот и r = 2n для полосовых и режекторных фильтров, то A это матрица r на r, B матрица r на 1, C матрица 1 на r, а D — 1 на 1.
Матрицы пространства состояний связывают вектор состояния , вход и выход посредством систем уравнений:
-
для цифровых фильтров
-
для аналоговых фильтров
| Типы данных |
|
Примеры
Эллиптический фильтр нижних частот
Details
Спроектируем эллиптический фильтр нижних частот 6-го порядка с пульсациями в полосе пропускания 10 дБ, затуханием в полосе задерживания 50 дБ и частотой среза в полосе пропускания 300 Гц, что соответствует 0.6π рад/отсчет для данных, дискретизированных с частотой 1000 Гц. Построим графики амплитудно-частотной и фазовой характеристик. Используем его для фильтрации случайного сигнала с частотой 1000 отсчетов.
import EngeeDSP.Functions: ellip, freqz, randn, filter
fc = 300
fs = 1000
b, a = ellip(6,10,50,fc/(fs/2))
freqz(b,a,fs,out=:plot)

dataIn = randn(1000,1)
dataOut = filter(b,a,dataIn)
Эллиптический заграждающий фильтр
Details
Спроектируем эллиптический заграждающий фильтр 3-го порядка с нормированными граничными частотами 0.2π и 0.6π рад/отсчет, пульсациями в полосе пропускания 5 дБ и затуханием в полосе задерживания 50 дБ. Построим графики амплитудно-частотной и фазовой характеристик. Используем его для фильтрации случайного сигнала.
import EngeeDSP.Functions: ellip, freqz, randn, filter
b,a = ellip(3,5,50,[0.2 0.6],"stop")
freqz(b,a,out=:plot)

dataIn = randn(1000,1)
dataOut = filter(b,a,dataIn)
Эллиптический фильтр верхних частот
Details
Спроектируем эллиптический фильтр верхних частот 6-го порядка с частотой среза полосы пропускания 300 Гц, что для данных, дискретизированных с частотой 1000 Гц, соответствует 0.6π рад/отсчет. Зададим пульсации в полосе пропускания 3 дБ и затухание в полосе задерживания 50 дБ. Преобразуем нули, полюса и коэффициент усиления в форму секций второго порядка. Построим графики амплитудно-частотной и фазовой характеристик.
import EngeeDSP.Functions: ellip, zp2sos
z,p,k = ellip(6,3,50,300/500,"high"; nout=3)
sos = zp2sos(z,p,k)
freqz(sos, out=:plot)

Эллиптический полосовой фильтр
Details
Спроектируем эллиптический полосовой фильтр 20-го порядка с нижней полосой пропускания 500 Гц и верхней полосой пропускания 560 Гц. Зададим пульсации в полосе пропускания 3 дБ, затухание в полосе заграждения 40 дБ и частоту дискретизации 1500 Гц. Используем представление в пространстве состояний. Преобразуем представление в пространстве состояний в форму секций второго порядка. Построим графики амплитудно-частотной и фазовой характеристик.
import EngeeDSP.Functions: ellip, ss2sos
fs = 1500
A,B,C,D = ellip(10,3,40,[500 560]/(fs/2); nout=4)
sos = ss2sos(A,B,C,D)[1]
freqz(sos,out=:plot)

Алгоритмы
Эллиптические фильтры обладают более крутым спадом характеристики, чем фильтры Баттерворта или Чебышева, но обладают равномерными пульсациями как в полосе пропускания, так и в полосе задерживания. В целом, эллиптические фильтры соответствуют заданным характеристикам, имея наименьший порядок среди фильтров любого типа.
Эллиптический фильтр ellip использует пятиэтапный алгоритм:
-
Находит полюса, нули и коэффициент усиления аналогового прототипа нижних частот.
-
Преобразует полюса, нули и коэффициент усиления в пространство состояний.
-
При необходимости использует преобразование в пространстве состояний для конвертации фильтра нижних частот в полосовой, высокочастотный или режекторный фильтр с требуемыми ограничениями по частоте.
-
Для проектирования цифровых фильтров преобразует аналоговый фильтр в цифровой посредством билинейного преобразования с предварительным искажением частоты. Точная настройка частоты позволяет аналоговым и цифровым фильтрам иметь одинаковую амплитуду АЧХ на частотах
Wpилиw1иw2. -
При необходимости преобразует фильтр пространства состояний обратно в передаточную функцию или форму нули-полюса-усиление.