freqz

Частотная характеристика цифрового фильтра

Описание

пример

[h,w] = freqz(b,a,n) возвращает n-позиционный вектор частотной характеристики h и соответствующий вектор угловой частоты w для цифрового фильтра с коэффициентами передаточной функции, сохраненными в b и a.

пример

[h,w] = freqz(sos,n) возвращает n-точка комплексной частотной характеристики, соответствующей матрице секций второго порядка sos.

пример

[h,w] = freqz(d,n) возвращает n-точка комплексной частотной характеристики для цифрового фильтра d.

[h,w] = freqz(___,n,'whole') возвращает частотную характеристику в n точки выборки вокруг всей единичной окружности.

[h,f] = freqz(___,n,fs) возвращает вектор частотной характеристики h и соответствующий вектор физической частоты f для цифрового фильтра, предназначенного для фильтрации сигналов, дискретизированных со скоростью fs.

[h,f] = freqz(___,n,'whole',fs) возвращает вектор частоты в n точки в диапазоне от 0 до fs.

h = freqz(___,w) возвращает вектор частотной характеристики h оценивается на нормированных частотах, подаваемых в w.

h = freqz(___,f,fs) возвращает вектор частотной характеристики h оценивается на физических частотах, подаваемых в f.

пример

freqz(___) без выходных аргументов строит график частотной характеристики фильтра.

Примеры

свернуть все

Вычислите и отобразите величину ответ фильтра БИХ 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.

Вычислите и отобразите величину ответ фильтра БИХ 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];

sos1 = [b0*[b1 0] [a1 0]];
sos2 = [b2 a2];

[h,w] = freqz([sos1;sos2],'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.

Спроектируйте конечную импульсную характеристику lowpass фильтр порядка 80 с помощью окна Кайзера β=8. Задайте нормированную частоту среза 0.5π рад/образец. Отобразите величину и фазовые отклики фильтра.

b = fir1(80,0.5,kaiser(81,8));
freqz(b,1)

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

Спроектируйте тот же фильтр, используя designfilt. Отобразите его величину и фазовые отклики с помощью fvtool.

d = designfilt('lowpassfir','FilterOrder',80, ...
               'CutoffFrequency',0.5,'Window',{'kaiser',8});
freqz(d)

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.

Проектируйте конечную импульсную характеристику полосно-пропускной фильтр с полосой пропускания между 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.

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

свернуть все

Коэффициенты передаточной функции, заданные как векторы. Выразите передаточную функцию с точки зрения b и a как

H(ejω)=B(ejω)A(ejω)=b (1)+b (2)ejω+b (3)ej2ω++b (M)ej(M1)ωа (1)+а (2)ejω+а (3)ej2ω++одинej(N1)ω.

Пример: b = [1 3 3 1]/6 и a = [3 0 1 0]/3 задайте фильтр Баттерворта третьего порядка с нормализованной частотой 3 дБ 0.5, рад/выборка.

Типы данных: double | single
Поддержка комплексного числа: Да

Количество оценочных точек, заданное в виде положительного целочисленного скаляра не менее 2. Когда n отсутствует, значение по умолчанию равняется 512. Для достижения наилучших результатов задайте n к значению, большему, чем порядок фильтра.

Коэффициенты секции второго порядка, заданные как матрица. sos является матрицей K -by-6, где количество сечений, K, должно быть больше или равно 2. Если количество каскадов меньше 2, функция обрабатывает вход как вектор. Каждая строка sos соответствует коэффициентам фильтра второго порядка (biquad). i строка sos соответствует [bi(1) bi(2) bi(3) ai(1) ai(2) ai(3)].

Пример: s = [2 4 2 6 0 2;3 3 0 6 0 0] задает фильтр Баттерворта третьего порядка с нормализованной частотой 3 дБ 0.5, рад/выборка.

Типы данных: double | single
Поддержка комплексного числа: Да

Цифровой фильтр, заданный как digitalFilter объект. Использовать designfilt для генерации цифрового фильтра на основе спецификаций частотной характеристики.

Пример: d = designfilt('lowpassiir','FilterOrder',3,'HalfPowerFrequency',0.5) задает фильтр Баттерворта третьего порядка с нормализованной частотой 3 дБ 0.5, рад/выборка.

Частота дискретизации, заданная как положительная скалярная величина. Когда модуль времени является секундами, fs выражается в герцах.

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

Угловые частоты, заданные как вектор и выраженные в рад/выборке. w должен иметь как минимум два элемента, потому что в противном случае функция интерпретирует его как n. w = π соответствует частоте Найквиста.

Частоты, заданные как вектор. f должен иметь как минимум два элемента, потому что в противном случае функция интерпретирует его как n. Когда модуль времени является секундами, f выражается в герцах.

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

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

свернуть все

Частотная характеристика, возвращенная как вектор. Если вы задаете n, затем h имеет длину n. Если вы не задаете n, или задайте n в качестве пустого вектора затем h имеет длину 512.

Если вход в freqz является одинарной точностью, функция вычисляет частотную характеристику с помощью арифметики с одной точностью. Область выхода h является одинарной точностью.

Угловые частоты, возвращенные как вектор. w имеет значения в диапазоне от 0 до π. Если вы задаете 'whole' во входе, значениях в w Область значений от 0 до 2 π. Если вы задаете n, w имеет длину n. Если вы не задаете n, или задайте n как пустой вектор, w имеет длину 512.

Частоты, возвращенные как вектор, выраженный в герцах. f имеет значения в диапазоне от 0 до fs/ 2 Гц. Если вы задаете 'whole' во входе, значениях в f область значений от 0 до fs Гц. Если вы задаете n, f имеет длину n. Если вы не задаете n, или задайте n как пустой вектор, f имеет длину 512.

Алгоритмы

Частотная характеристика цифрового фильтра может быть интерпретирована как передаточная функция, рассчитанная в z = e [1].

freqz определяет передаточную функцию от (действительного или комплексного) числителя и полиномов знаменателя, которые вы задаете, и возвращает комплексную частотную характеристику, H (e), цифрового фильтра. Частотная характеристика оценивается в точках выборки, определяемых синтаксисом, который вы используете.

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

Когда вы задаете вектор частот как вход, freqz оценивает полиномы в каждой частотной точке и делит характеристику числителя на характеристику знаменателя. Чтобы вычислить полиномы, функция использует метод Хорнера.

Ссылки

[1] Oppenheim, Alan V., Ronald W. Schafer, and John R. Buck. Обработка сигнала в дискретном времени. 2nd Ed. Upper Saddle River, NJ: Prentice Hall, 1999.

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

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