exponenta event banner

масло

Конструкция фильтра бабочки

Описание

пример

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

пример

[b,a] = butter(n,Wn,ftype) создает низкочастотный, высокоскоростной, полосовой или полосовой фильтр Butterworth, в зависимости от значения ftype и число элементов Wn. Полученные схемы полосы пропускания и полосы пропускания имеют порядок 2n.

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

пример

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

пример

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

пример

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

Примеры

свернуть все

Спроектируйте фильтр Баттерворта 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);

Сконструируйте полосовой фильтр Butterworth 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);

Сконструируйте фильтр Butterworth 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 Гц. Используйте представление state-space. Проектирование идентичного фильтра с использованием 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.

Спроектируйте аналоговый фильтр нижних частот Баттерворта 5-го порядка с частотой отсечки 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);

Спроектируйте фильтр 5-го порядка Чебышева типа I с той же частотой кромки и 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.

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

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

свернуть все

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

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

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

  • Если Wn является скалярным, то butter конструирует фильтр нижних или верхних частот с частотой отсечки Wn.

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

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

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

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

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

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

  • 'high' задает фильтр верхних частот с частотой отсечки Wn.

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

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

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

свернуть все

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

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

    H (z) = B (z) A (z) = b (1) + b (2) z−1+⋯+b (n + 1) z na (1) + a (2) z−1+⋯+a (n + 1) z − n.

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

    H (s) = B (s) A (s) = b (1) sn + b (2) sn−1+⋯+b (n + 1) a (1) sn + a (2) sn−1+⋯+a (n + 1).

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

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

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

    H (z) = k (1 z (1) z − 1) (1 z (2) z 1) (1 z (n) z − 1) (1 p (1) z 1) (1 − p (2) z − 1) ⋯ (1 − p (n) z − 1).

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

    H (s) = k (s z (1)) (s z (2)) (s z (n)) (s p (1)) (s − p (2)) ⋯ (s − p (n)).

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

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

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

    x (k + 1) = A x (k) + B u (k) y (k) = C x (k) + D u (k).

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

    x˙=A x + B uy = C x + D u.

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

Подробнее

свернуть все

Ограничения

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

В общем, используйте [z,p,k] синтаксис для разработки фильтров IIR. Для анализа или внедрения фильтра можно использовать [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. Он находит низкочастотные аналоговые прототипы полюсов, нулей и усиления с помощью функции buttap.

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

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

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

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

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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