freqz

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

Синтаксис

[h,w] = freqz(b,a,n)
[h,w] = freqz(sos,n)
[h,w] = freqz(d,n)
[h,w] = freqz(___,n,'whole')
[h,f] = freqz(___,n,fs)
[h,f] = freqz(___,n,'whole',fs)
h = freqz(___,w)
h = freqz(___,f,fs)
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).

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

Вычислите и отобразите ответ значения БИХ третьего порядка 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).

Выразите передаточную функцию с точки зрения разделов второго порядка. Найдите частотную характеристику в 2 001 точке, охватывающей полный модульный круг.

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)')

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

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

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

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

Разработайте КИХ-полосовой фильтр с полосой пропускания между 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)')

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

свернуть все

Коэффициенты передаточной функции, заданные как векторы. Выразите передаточную функцию с точки зрения 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ω++(N) ej(N1)ω.

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

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

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

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

Коэффициенты раздела второго порядка, заданные как матрица. sos является K-by-6 матрица, где количество разделов, K, должно быть больше, чем или равным 2. Если количество разделов - меньше чем 2, функция обрабатывает вход как вектор числителя. Каждая строка sos соответствует коэффициентам второго порядка (biquad) фильтр. i th строка 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] Оппенхейм, Алан V, Рональд В. Шафер и Джон Р. Бак. Обработка сигналов дискретного времени. 2-й Эд. Верхний Сэддл-Ривер, NJ: Prentice Hall, 1999.

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

Смотрите также

| | | | | | | | |

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