fir1

Создание оконного КИХ-фильтра

Описание

пример

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

пример

b = fir1(n,Wn,ftype) проектирует lowpass, highpass, bandpass, 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)

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

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

Спроектируйте фильтр верхней конечной импульсной характеристики 34-го порядка, чтобы ослабить компоненты сигнала ниже 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)

Фильтрация сигнала. Отображение исходных и высокочастотных сигналов. Используйте ту же шкалу оси 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')

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 2 objects of type line. These objects represent bM, bW.

Перепроектирование bM использование окна Ханна. (The 'DC-0' опционально.) Сравните величину характеристики проектов Хемминга и Ханна.

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

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

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 2 objects of type line. These objects represent Hamming, Hann.

Перепроектирование bW использование окна Tukey. Сравните величину характеристики проектов Хемминга и Тьюки.

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

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

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 2 objects of type line. These objects represent Hamming, Tukey.

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

свернуть все

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

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

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

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

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

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

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

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

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

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

  • 'high' задает высокочастотный фильтр с частотой среза Wn.

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

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

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

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

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

fir1 не увеличивает автоматически длину window если вы пытаетесь спроектировать фильтр highpass или bandstop нечетного порядка.

Пример: kaiser(n+1,0.5) задает окно Кайзера с параметром формы 0,5 для использования с фильтром порядка <reservedrangesplaceholder0>.

Пример: hamming(n+1) эквивалентно оставлению окна неопределенным.

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

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

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

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

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

свернуть все

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

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

Алгоритмы

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

Ссылки

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

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

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

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