ellip

Эллиптический проект фильтра

Синтаксис

[b,a] = ellip(n,Rp,Rs,Wp)
[b,a] = ellip(n,Rp,Rs,Wp,ftype)
[z,p,k] = ellip(___)
[A,B,C,D] = ellip(___)
[___] = ellip(___,'s')

Описание

пример

[b,a] = ellip(n,Rp,Rs,Wp) возвращает коэффициенты передаточной функции th-порядка n lowpass цифровой эллиптический фильтр с нормированной частотой ребра полосы пропускания Wp. Получившийся фильтр имеет децибелы Rp пульсации полосы пропускания от пика к пику и децибелы Rs затухания полосы задерживания вниз от пикового значения полосы пропускания.

пример

[b,a] = ellip(n,Rp,Rs,Wp,ftype) разрабатывает lowpass, highpass, полосу пропускания или bandstop эллиптический фильтр, в зависимости от значения ftype и числа элементов Wp. Получившаяся полоса пропускания и проекты bandstop имеют порядок 2n.

Примечание:   Смотрите Ограничения для получения информации о числовых проблемах, которые влияют на формирование передаточной функции.

пример

[z,p,k] = ellip(___) разрабатывает lowpass, highpass, полосу пропускания или bandstop цифровой эллиптический фильтр и возвращает его нули, полюса и усиление. Этот синтаксис может включать любой из входных параметров в предыдущих синтаксисах.

пример

[A,B,C,D] = ellip(___) разрабатывает lowpass, highpass, полосу пропускания или bandstop цифровой эллиптический фильтр и возвращает матрицы, которые задают его представление пространства состояний.

пример

[___] = ellip(___,'s') разрабатывает lowpass, highpass, полосу пропускания или bandstop аналоговый эллиптический фильтр с ребром полосы пропускания угловая частота Wp, децибелы Rp пульсации полосы пропускания и децибелы Rs затухания полосы задерживания.

Примеры

свернуть все

Разработайте 6-й порядок lowpass эллиптический фильтр с 5 дБ пульсации полосы пропускания, 40 дБ затухания полосы задерживания и частотой ребра полосы пропускания 300 Гц, которая, для данных, выбранных на уровне 1 000 Гц, соответствует 0.6π рад/выборка. Постройте его значение и фазовые отклики. Используйте его, чтобы отфильтровать случайный сигнал с 1000 выборками.

[b,a] = ellip(6,5,40,0.6);
freqz(b,a)

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

Разработайте 6-й порядок эллиптический заграждающий фильтр с нормированными частотами ребра 0.2π и 0.6π рад/выборка, 5 дБ пульсации полосы пропускания и 50 дБ затухания полосы задерживания. Постройте его значение и фазовые отклики. Используйте его, чтобы отфильтровать случайные данные.

[b,a] = ellip(3,5,50,[0.2 0.6],'stop');
freqz(b,a)

dataIn = randn(1000,1);
dataOut = filter(b,a,dataIn);

Разработайте 6-й порядок highpass эллиптический фильтр с частотой ребра полосы пропускания 300 Гц, которая, для данных, выбранных на уровне 1 000 Гц, соответствует 0.6π рад/выборка. Задайте 3 дБ пульсации полосы пропускания и 50 дБ затухания полосы задерживания. Постройте значение и фазовые отклики. Преобразуйте нули, полюса и усиление к разделам второго порядка для использования fvtool.

[z,p,k] = ellip(6,3,50,300/500,'high');
sos = zp2sos(z,p,k);
fvtool(sos,'Analysis','freq')

Разработайте 20-й порядок эллиптический полосовой фильтр с более низкой частотой полосы пропускания 500 Гц и более высокой частотой полосы пропускания 560 Гц. Задайте пульсацию полосы пропускания 3 дБ, затухание полосы задерживания 40 дБ и частоту дискретизации 1 500 Гц. Используйте представление пространства состояний. Разработайте идентичный фильтр с помощью designfilt.

[A,B,C,D] = ellip(10,3,40,[500 560]/750);
d = designfilt('bandpassiir','FilterOrder',20, ...
    'PassbandFrequency1',500,'PassbandFrequency2',560, ...
    'PassbandRipple',3, ...
    'StopbandAttenuation1',40,'StopbandAttenuation2',40, ...
    'SampleRate',1500);

Преобразуйте представление пространства состояний разделам второго порядка. Визуализируйте частотные характеристики с помощью fvtool.

sos = ss2sos(A,B,C,D);
fvt = fvtool(sos,d,'Fs',1500);
legend(fvt,'ellip','designfilt')

Разработайте аналог 5-го порядка Баттерворт lowpass фильтр с частотой среза 2 ГГц. Умножьтесь 2π преобразовывать частоту в радианы в секунду. Вычислите частотную характеристику фильтра в 4 096 точках.

n = 5;
f = 2e9;

[zb,pb,kb] = butter(n,2*pi*f,'s');
[bb,ab] = zp2tf(zb,pb,kb);
[hb,wb] = freqs(bb,ab,4096);

Разработайте 5-й порядок Чебышевский Тип, который я фильтрую с той же частотой ребра и 3 дБ пульсации полосы пропускания. Вычислите его частотную характеристику.

[z1,p1,k1] = cheby1(n,3,2*pi*f,'s');
[b1,a1] = zp2tf(z1,p1,k1);
[h1,w1] = freqs(b1,a1,4096);

Разработайте 5-й порядок фильтр Типа II Чебышева с той же частотой ребра и 30 дБ затухания полосы задерживания. Вычислите его частотную характеристику.

[z2,p2,k2] = cheby2(n,30,2*pi*f,'s');
[b2,a2] = zp2tf(z2,p2,k2);
[h2,w2] = freqs(b2,a2,4096);

Разработайте 5-й порядок эллиптический фильтр с той же частотой ребра, 3 дБ пульсации полосы пропускания и 30 дБ затухания полосы задерживания. Вычислите его частотную характеристику.

[ze,pe,ke] = ellip(n,3,30,2*pi*f,'s');
[be,ae] = zp2tf(ze,pe,ke);
[he,we] = freqs(be,ae,4096);

Постройте затухание в децибелах. Выразите частоту в гигагерце. Сравните фильтры.

plot(wb/(2e9*pi),mag2db(abs(hb)))
hold on
plot(w1/(2e9*pi),mag2db(abs(h1)))
plot(w2/(2e9*pi),mag2db(abs(h2)))
plot(we/(2e9*pi),mag2db(abs(he)))
axis([0 4 -40 5])
grid
xlabel('Frequency (GHz)')
ylabel('Attenuation (dB)')
legend('butter','cheby1','cheby2','ellip')

У Баттерворта и Чебышевских фильтров Типа II есть плоские полосы пропускания и широкие полосы перехода. Чебышевский Тип I и эллиптические фильтры прокручиваются прочь быстрее, но имеют пульсацию полосы пропускания. Вход частоты к Чебышевской функции проекта Типа II устанавливает начало полосы задерживания, а не конец полосы пропускания.

Входные параметры

свернуть все

Отфильтруйте порядок, заданный как целочисленный скаляр.

Типы данных: double

Пульсация полосы пропускания от пика к пику, заданная как положительная скалярная величина, выражается в децибелах.

Если ваша спецификация, ℓ, находится в линейных модулях, можно преобразовать ее в децибелы с помощью Rp = 40 log10 ((1 + ℓ) / (1– ℓ)).

Типы данных: double

Затухание полосы задерживания вниз от пикового значения полосы пропускания, заданного как положительная скалярная величина, выражается в децибелах.

Если ваша спецификация, ℓ, находится в линейных модулях, можно преобразовать ее в децибелы с помощью Rs =  -20 log10 .

Типы данных: double

Частота ребра полосы пропускания, заданная как скаляр или двухэлементный вектор. Частота ребра полосы пропускания является частотой, на которой ответ значения фильтра является –Rp децибелами. Меньшие значения пульсации полосы пропускания, Rp и больших значений затухания полосы задерживания, Rs, обоих результатов в более широких полосах перехода.

  • Если Wp является скаляром, то ellip разрабатывает lowpass или фильтр highpass с частотой ребра Wp.

    Если Wp является двухэлементный векторный  [w1 w2], где w1 < w2, то ellip разрабатывает полосовой или заграждающий фильтр с более низкой частотой ребра w1 и более высокой частотой ребра w2.

  • Для цифровых фильтров частоты ребра полосы пропускания должны находиться между 0 и 1, где 1 соответствует уровню Найквиста — половина  рад/выборка π или частота дискретизации.

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

Типы данных: double

Отфильтруйте тип, заданный как одно из следующего:

  • 'low' задает фильтр lowpass с частотой ребра полосы пропускания Wp. 'low' является значением по умолчанию для скалярного Wp.

  • 'high' задает фильтр highpass с частотой ребра полосы пропускания Wp.

  • 'bandpass' задает полосовой фильтр порядка 2n, если Wp является двухэлементным вектором. 'bandpass' является значением по умолчанию, когда Wp имеет два элемента.

  • 'stop' задает заграждающий фильтр порядка 2n, если Wp является двухэлементным вектором.

Выходные аргументы

свернуть все

Коэффициенты передаточной функции фильтра, возвращенного как векторы - строки из длины n + 1 для lowpass и фильтров highpass и 2n + 1 для полосовых и заграждающих фильтров.

  • Для цифровых фильтров передаточная функция выражается с точки зрения b и a как

    H(z)=B(z)A(z)=b (1)+b (2) z1++b (n+1) zn(1)+(2) z1++(n+1) zn.

  • Для аналоговых фильтров передаточная функция выражается с точки зрения b и a как

    H(s)=B(s)A(s)=b (1) sn+b (2) sn1++b (n+1)(1) sn+(2) sn1++(n+1).

Типы данных: double

Нули, полюса, и усиление фильтра, возвратились как два вектор-столбца длины n (2n для полосы пропускания и проектов bandstop) и скаляр.

  • Для цифровых фильтров передаточная функция выражается с точки зрения z, p и k как

    H(z)=k(1z (1) z1)(1z (2) z1)(1z (n) z1)(1p (1) z1)(1p (2) z1)(1pn z1).

  • Для аналоговых фильтров передаточная функция выражается с точки зрения z, p и k как

    H(s)=k(sz (1))(sz (2))(sz (n))(sp (1))(sp (2))(spn ).

Типы данных: double

Представление пространства состояний фильтра, возвращенного как матрицы. Если m = n для lowpass и проектов highpass и m = 2n для полосовых и заграждающих фильтров, то A является m × m, B, является m  × 1, C является 1 × m, и D является 1  × 1.

  • Для цифровых фильтров матрицы пространства состояний связывают вектор состояния x, вход u и вывод y через

    x(k+1)=Ax(k)+Bu(k)y(k)=   Cx(k)+Du(k).

  • Для аналоговых фильтров матрицы пространства состояний связывают вектор состояния x, вход u и вывод y через

    x˙=Ax+Buy=Cx+Du.

Типы данных: double

Больше о

свернуть все

Ограничения

Числовая нестабильность синтаксиса передаточной функции

В целом используйте синтаксис [z,p,k], чтобы разработать БИХ-фильтры. Чтобы анализировать или реализовать ваш фильтр, можно затем использовать [z,p,k] вывод с zp2sos. Если вы разрабатываете фильтр с помощью синтаксиса [b,a], вы можете столкнуться с числовыми проблемами. Эти проблемы происходят из-за ошибок округления и могут произойти для n всего 4. Следующий пример иллюстрирует это ограничение.

n = 6; 
Rp = 0.1;
Rs = 80;
Wn = [2.5e6 29e6]/500e6; 
ftype = 'bandpass'; 

% Transfer Function design 
[b,a] = ellip(n,Rp,Rs,Wn,ftype);            % This filter is unstable 

% Zero-Pole-Gain design 
[z,p,k] = ellip(n,Rp,Rs,Wn,ftype);
sos = zp2sos(z,p,k);

% Plot and compare the results
hfvt = fvtool(b,a,sos,'FrequencyScale','log'); 
legend(hfvt,'TF Design','ZPK Design')

Алгоритмы

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

ellip использует алгоритм с пятью шагами:

  1. Это находит lowpass аналоговые прототипные полюса, нули и усиление с помощью функционального ellipap.

  2. Это преобразовывает полюса, нули и усиление в форму пространства состояний.

  3. При необходимости это использует преобразование пространства состояний, чтобы преобразовать фильтр lowpass в полосу пропускания, highpass, или заграждающий фильтр с желаемыми ограничениями частоты.

  4. Для создания цифровых фильтров это использует bilinear, чтобы преобразовать аналоговый фильтр в цифровое, проникают в билинейное преобразование с предварительным деформированием частоты. Тщательная корректировка частоты позволяет аналоговым фильтрам и цифровым фильтрам иметь то же значение частотной характеристики в Wp или w1 и w2.

  5. Это преобразовывает фильтр пространства состояний назад в передаточную функцию или форму нулей и полюсов, как требуется.

Расширенные возможности

Смотрите также

| | | | | | | |

Представлено до R2006a