масло

Проект фильтра Баттерворта

Синтаксис

[b,a] = butter(n,Wn)
[b,a] = butter(n,Wn,ftype)
[z,p,k] = butter(___)
[A,B,C,D] = butter(___)
[___] = butter(___,'s')

Описание

пример

[b,a] = butter(n,Wn) возвращает коэффициенты передаточной функции th-порядка n lowpass цифровой Фильтр Баттерворта с нормированной частотой среза Wn.

пример

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

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

пример

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

пример

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

пример

[___] = butter(___,'s') разрабатывает lowpass, highpass, полосу пропускания или bandstop аналоговый Фильтр Баттерворта с сокращением угловая частота Wn.

Примеры

свернуть все

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

fc = 300;
fs = 1000;

[b,a] = butter(6,fc/(fs/2));
freqz(b,a)

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

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

[b,a] = butter(3,[0.2 0.6],'stop');
freqz(b,a)

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

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

[z,p,k] = butter(9,300/500,'high');
sos = zp2sos(z,p,k);
fvtool(sos,'Analysis','freq')

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

[A,B,C,D] = butter(10,[500 560]/750);
d = designfilt('bandpassiir','FilterOrder',20, ...
    'HalfPowerFrequency1',500,'HalfPowerFrequency2',560, ...
    'SampleRate',1500);

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

sos = ss2sos(A,B,C,D);
fvt = fvtool(sos,d,'Fs',1500);
legend(fvt,'butter','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

Частота среза, заданная как скаляр или двухэлементный вектор. Частота среза является частотой, на которой ответ значения фильтра равняется 1 / √2.

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

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

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

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

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

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

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

  • 'high' задает фильтр highpass с частотой среза Wn.

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

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

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

свернуть все

Коэффициенты передаточной функции фильтра, возвращенного как векторы - строки из длины 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;
Wn = [2.5e6 29e6]/500e6;
ftype = 'bandpass';

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

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

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

Алгоритмы

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

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

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

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

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

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

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

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

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

| | | | | | | | |

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