butter

Разработка фильтра Баттерворта

Описание

пример

[b,a] = butter(n,Wn) возвращает коэффициенты передаточной функции nth-порядок 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);

Спроектируйте фильтр Чебышевский Тип 1 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 устанавливает начало полосы задерживания, а не конец полосы пропускания.

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

свернуть все

Порядок фильтра в виде целочисленного скаляра. Для полосы пропускания и проектов bandstop, n представляет половину порядка фильтра.

Типы данных: 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) и скаляр.

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

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

| | | | | | | | |

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