freqz
использует основанный на БПФ алгоритм, чтобы вычислить частотную характеристику Z-преобразования цифрового фильтра. А именно, оператор
[h,w] = freqz(b,a,p)
возвращает частотную характеристику комплекса p-точки, H (e j ω), цифрового фильтра.
В его самой простой форме freqz
принимает векторы коэффициентов фильтра b
и a
и целочисленный p
, задающий число точек, в котором можно вычислить частотную характеристику. freqz
возвращает комплексную частотную характеристику в векторном h
и фактические точки частоты в векторном w
в rad/s.
freqz
может принять другие параметры, такие как частота дискретизации или вектор произвольных точек частоты. Пример ниже находок частотная характеристика с 256 точками для 12-го порядка Чебышевский Тип я фильтрую. Вызов freqz
задает частоту дискретизации fs
1 000 Гц:
[b,a] = cheby1(12,0.5,200/500); [h,f] = freqz(b,a,256,1000);
Поскольку список параметров включает частоту дискретизации, freqz
возвращает векторный f
, который содержит 256 точек частоты между 0 и fs/2
, используемый в вычислении частотной характеристики.
Этот тулбокс использует соглашение, что модульная частота является частотой Найквиста, заданной как половина частоты дискретизации. Параметр частоты среза для всех основных функций проекта фильтра нормирован частотой Найквиста. Для системы с частотой дискретизации на 1 000 Гц, например, 300 Гц являются 300/500 = 0.6. Чтобы преобразовать нормированную частоту в угловую частоту вокруг модульного круга, умножьтесь π. Чтобы преобразовать нормированную частоту назад в герц, умножьте наполовину демонстрационную частоту.
Если вы вызываете freqz
без выходных аргументов, он строит и значение по сравнению с частотой и фазу по сравнению с частотой. Например, девятый порядок Баттерворт lowpass фильтр с частотой среза 400 Гц, на основе частоты дискретизации на 2 000 Гц,
[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 фильтр, описанный следующей передаточной функцией:
Выразите числитель и знаменатель как полиномиальные свертки. Найдите частотную характеристику в 2 001 точке, охватывающей полный модульный круг.
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-й порядок highpass Фильтр Баттерворта, имеющий нормированную частоту на 3 дБ рад/выборка. Вычислите его частотную характеристику. Выразите ответ значения в децибелах и постройте его.
[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
; можно задать много точек частоты, чтобы использовать, предоставить вектор произвольных точек частоты и построить значение и фазовый отклик фильтра. Этот пример показывает, как вычислить и отобразить аналоговые частотные характеристики.
Разработайте аналог 5-го порядка Баттерворт lowpass фильтр с частотой среза 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 устанавливает начало полосы задерживания, а не конец полосы пропускания.