Частотная характеристика

Цифровая область

freqz использует алгоритм, основанный на FFT, чтобы вычислить частотную характеристику Z-преобразования цифрового фильтра. В частности, оператор

[h,w] = freqz(b,a,p)

возвращает комплексную частотную характеристику p-точек, H (ejω), цифрового фильтра.

H(ejω)=b(1)+b(2)ejω+...+b(n+1)ejωna(1)+a(2)ejω+...+a(m+1)ejωm

В самой простой форме 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 третьего порядка, описанный следующей передаточной функцией:

H(z)=0.05634(1+z-1)(1-1.0166z-1+z-2)(1-0.683z-1)(1-1.4461z-1+0.7957z-2).

Выразите числитель и знаменатель как полиномиальные свертки. Найдите частотную характеристику в 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)')

Figure contains an axes. The axes contains an object of type line.

Частотная характеристика конечной импульсной характеристики полосно-пропускающего фильтра

Проектируйте конечную импульсную характеристику полосно-пропускной фильтр с полосой пропускания между 0.35π и 0.8π рад/образец и 3 дБ ряби. Первый диапазон остановки идёт от 0 кому 0.1π рад/образец и имеет ослабление 40 дБ. Второй диапазон остановки идёт от 0.9π рад/образец на частоту Найквиста и имеет ослабление 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)')

Figure contains 2 axes. Axes 1 contains 2 objects of type line. These objects represent Response, Passband. Axes 2 contains 2 objects of type line.

Амплитудная характеристика высокочастотного фильтра

Разработайте фильтр Баттерворта 3-го порядка с нормированной частотой 3-dB 0.5π рад/образец. Вычислите его частотную характеристику. Выразите величину ответ в децибелах и постройте его график.

[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])

Figure contains an axes. The axes contains an object of type line.

Повторите расчеты с помощью fvtool.

fvtool(b,a)

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 an object of type line.

Аналоговая область

freqs оценивает частотную характеристику для аналогового фильтра, заданную двумя векторами входного коэффициента, b и a. Его работа аналогична операции freqz; можно задать количество используемых частотных точек, задать вектор произвольных частотных точек и построить график величины и фазового отклика фильтра. В этом примере показано, как вычислить и отобразить аналоговые частотные характеристики.

Сравнение аналогового Lowpass БИХ

Разработайте аналоговый 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 Чебышева устанавливает начало полосы пропускания, а не конец полосы пропускания.