fir1

КИХ-проект фильтра оконный

Синтаксис

b = fir1(n,Wn)
b = fir1(n,Wn,ftype)
b = fir1(___,window)
b = fir1(___,scaleopt)

Описание

пример

b = fir1(n,Wn) использует Окно Хэмминга, чтобы разработать th-порядок n lowpass, полосу пропускания или многополосный КИХ-фильтр с линейной фазой. Тип фильтра зависит от числа элементов Wn.

пример

b = fir1(n,Wn,ftype) разрабатывает lowpass, highpass, полосу пропускания, bandstop, или многополосный фильтр, в зависимости от значения ftype и числа элементов Wn.

пример

b = fir1(___,window) разрабатывает фильтр с помощью вектора, заданного в window и любом из аргументов от предыдущих синтаксисов.

b = fir1(___,scaleopt) дополнительно задает, нормирован ли ответ значения фильтра.

Примечание:   Использование fir2 для оконных фильтров с произвольной частотной характеристикой.

Примеры

свернуть все

Разработайте КИХ-полосовой фильтр 48-го порядка с полосой пропускания 0.35πω0.65π рад/выборка. Визуализируйте его значение и фазовые отклики.

b = fir1(48,[0.35 0.65]);
freqz(b,1,512)

Загрузите chirp.mat. Файл содержит сигнал, y, который имеет большую часть его силы выше Fs/4 или половину частоты Найквиста. Частота дискретизации составляет 8 192 Гц.

Разработайте КИХ 34-го порядка highpass фильтр, чтобы ослабить компоненты сигнала ниже Fs/4. Используйте частоту среза 0,48 и Окно Чебышева с 30 дБ пульсации.

load chirp

t = (0:length(y)-1)/Fs;

bhi = fir1(34,0.48,'high',chebwin(35,30));
freqz(bhi,1)

Отфильтруйте сигнал. Отобразите исходные и highpass-отфильтрованные сигналы. Используйте ту же шкалу оси Y для обоих графиков.

outhi = filter(bhi,1,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outhi)
title('Highpass Filtered Signal')
xlabel('Time (s)')
ylim(ys)

Разработайте фильтр lowpass с теми же спецификациями. Отфильтруйте сигнал и сравните результат с оригиналом. Используйте ту же шкалу оси Y для обоих графиков.

blo = fir1(34,0.48,chebwin(35,30));

outlo = filter(blo,1,y);

subplot(2,1,1)
plot(t,y)
title('Original Signal')
ys = ylim;

subplot(2,1,2)
plot(t,outlo)
title('Lowpass Filtered Signal')
xlabel('Time (s)')
ylim(ys)

Разработайте КИХ-фильтр 46-го порядка, который ослабляет нормированные частоты ниже 0.4π рад/выборка и между 0.6π и 0.9π рад/выборка. Вызовите его bM.

ord = 46;

low = 0.4;
bnd = [0.6 0.9];

bM = fir1(ord,[low bnd]);

Перепроектируйте bM так, чтобы он передал полосы, он ослаблял и останавливает другие частоты. Вызовите новый фильтр bW. Используйте fvtool, чтобы отобразить частотные характеристики фильтров.

bW = fir1(ord,[low bnd],'DC-1');

hfvt = fvtool(bM,1,bW,1);
legend(hfvt,'bM','bW')

Перепроектируйте bM с помощью окна Хэнна. ('DC-0' является дополнительным.) Сравнивают ответы значения проектов Хэмминга и Хэнна.

hM = fir1(ord,[low bnd],'DC-0',hann(ord+1));

hfvt = fvtool(bM,1,hM,1);
legend(hfvt,'Hamming','Hann')

Перепроектируйте bW с помощью окна Туки. Сравните ответы значения проектов Хэмминга и Туки.

tW = fir1(ord,[low bnd],'DC-1',tukeywin(ord+1));

hfvt = fvtool(bW,1,tW,1);
legend(hfvt,'Hamming','Tukey')

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

свернуть все

Отфильтруйте порядок, заданный как целочисленный скаляр.

Для highpass и bandstop настроек, fir1 всегда использует даже порядок фильтра. Порядок должен состоять даже в том, потому что нечетный порядок симметричные КИХ-фильтры должен иметь нулевое усиление на частоте Найквиста. Если вы задаете нечетный n для highpass или заграждающего фильтра, то fir1 постепенно увеличивает n 1.

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

Ограничения частоты, заданные как скаляр, двухэлементный вектор или многоэлементный вектор. Все элементы Wn должны быть строго больше, чем 0 и строго меньшими, чем 1, где 1 соответствует частоте Найквиста: 0 < Wn < 1. Частота Найквиста является половиной  рад/выборка π или частота дискретизации.

  • Если Wn является скаляром, то fir1 разрабатывает lowpass или фильтр highpass с частотой среза Wn. Частота среза является частотой, на которой нормированное усиление фильтра составляет -6 дБ.

  • Если Wn является двухэлементный векторный  [w1 w2], где w1 < w2, то fir1 разрабатывает полосовой или заграждающий фильтр с более низкой частотой среза w1 и более высокой частотой среза w2.

  • Если Wn является многоэлементный векторный    [w1 w2 ... wn], где w1 < w2 < … < wn, то fir1 возвращает th-порядок n многополосный фильтр с полосами 0 < ω < w1, w1 < ω < w2, …, wn < ω < 1.

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

Отфильтруйте тип, заданный как одно из следующего:

  • 'low' задает фильтр lowpass с частотой среза Wn. 'low' является значением по умолчанию для скалярного Wn.

  • 'high' задает фильтр highpass с частотой среза Wn.

  • 'bandpass' задает полосовой фильтр, если Wn является двухэлементным вектором. 'bandpass' является значением по умолчанию, когда Wn имеет два элемента.

  • 'stop' задает заграждающий фильтр, если Wn является двухэлементным вектором.

  • 'DC-0' указывает, что первая полоса многополосного фильтра является полосой задерживания. 'DC-0' является значением по умолчанию, когда Wn имеет больше чем два элемента.

  • 'DC-1' указывает, что первая полоса многополосного фильтра является полосой пропускания.

Окно, заданное как вектор. Вектор окна должен иметь n + 1 элемент. Если вы не задаете window, то fir1 использует Окно Хэмминга. Для списка доступных окон смотрите Windows.

fir1 автоматически не увеличивает длину window, при попытке разработать highpass или заграждающий фильтр нечетного порядка.

Пример: kaiser(n+1,0.5) задает окно Kaiser с параметром формы 0.5, чтобы использовать с фильтром порядка n.

Пример: hamming(n+1) эквивалентен отъезду незаданного окна.

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

Опция нормализации, заданная или как 'scale' или как 'noscale'.

  • 'scale' нормирует коэффициенты так, чтобы ответ значения фильтра в центре полосы пропускания равнялся 1 (0 дБ).

  • 'noscale' не нормирует коэффициенты.

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

свернуть все

Отфильтруйте коэффициенты, возвращенные как вектор - строка из длины n + 1. Коэффициенты сортируются в убывающих степенях переменной z Z-преобразования:

B (z) = b(1) + b(2) z + … + b(n+1) z–n.

Алгоритмы

fir1 использует приближение наименьших квадратов, чтобы вычислить коэффициенты фильтра и затем сглаживает импульсный ответ с window.

Ссылки

[1] Комитет по Цифровой обработке сигналов Акустики IEEE, Речи, и Общества Обработки сигналов, программ редакторов для Цифровой обработки сигналов. Нью-Йорк: Нажатие IEEE, 1979, Алгоритм 5.2.

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

Генерация кода C/C++
Генерация кода C и C++ с помощью MATLAB® Coder™.

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

| | | | | | | | | |

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