butter

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

Описание

пример

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

пример

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

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

пример

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

пример

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

пример

[___] = butter(___,'s') проектирует lowpass, highpass, bandpass или полосно-заграждающий аналоговый фильтр Баттерворта с отсекающей угловой частотой Wn.

Примеры

свернуть все

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

fc = 300;
fs = 1000;

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

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

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)

Figure contains 2 axes. Axes 1 contains an object of type line. Axes 2 contains an object of type line.

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

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

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

Figure Filter Visualization Tool - Magnitude Response (dB) and Phase Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) and Phase Response contains an object of type line.

Разработайте полосовой фильтр Butterworth 20-го порядка с более низкой частотой отключения 500 Гц и более высокой частотой отключения 560 Гц. Задайте частоту дискретизации 1500 Гц. Используйте представление пространства состояний. Создайте идентичный фильтр с помощью 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')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent butter, designfilt.

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

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')

Figure contains an axes. The axes contains 4 objects of type line. These objects represent butter, cheby1, cheby2, ellip.

Фильтры Butterworth и Chebyshev Type II имеют плоские полосы пропускания и широкие переходные полосы. Чебышевский тип I и эллиптические фильтры крена быстрее, но имеют неравномерность в полосе пропускания. Частотный вход в функцию проекта типа II Чебышева устанавливает начало полосы пропускания, а не конец полосы пропускания.

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

свернуть все

Порядок фильтра, заданный как целочисленный скаляр. Для проектов полосно-заграждающих и полосно-заграждающих, 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' задает высокочастотный фильтр с частотой среза Wn.

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

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

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

Представление фильтра в пространстве состояний, возвращаемое как матрицы. Если m = n для lowpass и highpass проектов и m = 2 n для полосно-пропускающих и полосно-заграждающих фильтров, затем 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')

Figure Filter Visualization Tool - Magnitude Response (dB) contains an axes and other objects of type uitoolbar, uimenu. The axes with title Magnitude Response (dB) contains 2 objects of type line. These objects represent TF Design, ZPK Design.

Алгоритмы

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

butter использует пятиэтапный алгоритм:

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

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

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

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

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

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

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

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