freqz
использует алгоритм, основанный на FFT, чтобы вычислить частотную характеристику Z-преобразования цифрового фильтра. В частности, оператор
[h,w] = freqz(b,a,p)
возвращает комплексную частотную характеристику p-точек, H (ejω), цифрового фильтра.
В самой простой форме freqz
принимает векторы коэффициентов фильтра b
и a
, и целое число p
определение числа точек, в которой можно вычислить частотную характеристику. freqz
возвращает комплексную частотную характеристику в векторе h
, и фактические частотные точки в векторных w
в рад/с.
freqz
может принимать другие параметры, такие как частота дискретизации или вектор произвольных частотных точек. Приведенный ниже пример находит 256-точечную частотную характеристику для Фильтра Чебышевский Тип 1 12-го порядка. Вызов freqz
задает частоту дискретизации fs
1000 Гц:
[b,a] = cheby1(12,0.5,200/500); [h,f] = freqz(b,a,256,1000);
Поскольку список параметров включает частоту дискретизации, freqz
возвращает вектор f
который содержит 256 точек частоты от 0 до fs/2
используется в вычислении частотной характеристики.
Примечание
Этот тулбокс использует условие, что единичная частота является частотой Найквиста, заданной как половина частоты дискретизации. Параметр частоты отсечения для всех основных созданий фильтра функций нормирован частотой Найквиста. Для системы с частотой дискретизации 1000 Гц, например, 300 Гц составляет 300/500 = 0,6. Чтобы преобразовать нормированную частоту в угловую вокруг модуля круга, умножьте на π. Чтобы преобразовать нормированную частоту назад в герц, умножьте половину частоты дискретизации.
Если вы звоните freqz
без выходных аргументов, он строит графики и величина от частоты, и фаза от частоты. Например, lowpass Butterworth девятого порядка с частотой отключения 400 Гц, основанный на частоте дискретизации 2000 Гц,
[b,a] = butter(9,400/1000);
Чтобы вычислить 256-точечную комплексную частотную характеристику для этого фильтра и построить график величины и фазы с freqz
, использование
freqz(b,a,256,2000)
freqz
может также принять вектор произвольных частотных точек для использования в вычислении частотной характеристики. Для примера,
w = linspace(0,pi); h = freqz(b,a,w);
вычисляет комплексную частотную характеристику в частотных точках в w
для фильтра, заданного векторами b
и a
. Частотные точки могут варьироваться от 0 до 2 π. Чтобы задать вектор частоты, который находится в диапазоне от нуля до вашей частоты дискретизации, включите вектор частоты и значение частоты дискретизации в список параметров.
Эти примеры показывают, как вычислить и отобразить цифровые частотные характеристики.
Вычислите и отобразите величину ответ фильтра БИХ lowpass третьего порядка, описанный следующей передаточной функцией:
Выразите числитель и знаменатель как полиномиальные свертки. Найдите частотную характеристику в 2001 точках, охватывающих полный единичный круг.
b0 = 0.05634;
b1 = [1 1];
b2 = [1 -1.0166 1];
a1 = [1 -0.683];
a2 = [1 -1.4461 0.7957];
b = b0*conv(b1,b2);
a = conv(a1,a2);
[h,w] = freqz(b,a,'whole',2001);
Постройте график величины характеристики, выраженной в децибелах.
plot(w/pi,20*log10(abs(h))) ax = gca; ax.YLim = [-100 20]; ax.XTick = 0:.5:2; xlabel('Normalized Frequency (\times\pi rad/sample)') ylabel('Magnitude (dB)')
Проектируйте конечную импульсную характеристику полосно-пропускной фильтр с полосой пропускания между и рад/образец и 3 дБ ряби. Первый диапазон остановки идёт от кому рад/образец и имеет ослабление 40 дБ. Второй диапазон остановки идёт от рад/образец на частоту Найквиста и имеет ослабление 30 дБ. Вычислите частотную характеристику. Постройте график его величины как в линейных модулях, так и в децибелах. Выделите полосу пропускания.
sf1 = 0.1; pf1 = 0.35; pf2 = 0.8; sf2 = 0.9; pb = linspace(pf1,pf2,1e3)*pi; bp = designfilt('bandpassfir', ... 'StopbandAttenuation1',40, 'StopbandFrequency1',sf1,... 'PassbandFrequency1',pf1,'PassbandRipple',3,'PassbandFrequency2',pf2, ... 'StopbandFrequency2',sf2,'StopbandAttenuation2',30); [h,w] = freqz(bp,1024); hpb = freqz(bp,pb); subplot(2,1,1) plot(w/pi,abs(h),pb/pi,abs(hpb),'.-') axis([0 1 -1 2]) legend('Response','Passband','Location','South') ylabel('Magnitude') subplot(2,1,2) plot(w/pi,db(h),pb/pi,db(hpb),'.-') axis([0 1 -60 10]) xlabel('Normalized Frequency (\times\pi rad/sample)') ylabel('Magnitude (dB)')
Разработайте фильтр Баттерворта 3-го порядка с нормированной частотой 3-dB рад/образец. Вычислите его частотную характеристику. Выразите величину ответ в децибелах и постройте его график.
[b,a] = butter(3,0.5,'high'); [h,w] = freqz(b,a); dB = mag2db(abs(h)); plot(w/pi,dB) xlabel('\omega / \pi') ylabel('Magnitude (dB)') ylim([-82 5])
Повторите расчеты с помощью fvtool
.
fvtool(b,a)
freqs
оценивает частотную характеристику для аналогового фильтра, заданную двумя векторами входного коэффициента, b
и a
. Его работа аналогична операции freqz
; можно задать количество используемых частотных точек, задать вектор произвольных частотных точек и построить график величины и фазового отклика фильтра. В этом примере показано, как вычислить и отобразить аналоговые частотные характеристики.
Разработайте аналоговый lowpass Butterworth 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);
Проектируйте Фильтр Чебышевский Тип 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')
Фильтры Butterworth и Chebyshev Type II имеют плоские полосы пропускания и широкие переходные полосы. Чебышевский тип I и эллиптические фильтры крена быстрее, но имеют неравномерность в полосе пропускания. Частотный вход в функцию проекта типа II Чебышева устанавливает начало полосы пропускания, а не конец полосы пропускания.