ellip

Создание эллиптического фильтра

Описание

пример

[b,a] = ellip(n,Rp,Rs,Wp) возвращает коэффициенты передаточной функции nth-порядок 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) и скаляр.

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

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

  • Для аналоговых фильтров передаточная функция выражается в терминах zP, и 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