exponenta event banner

fir1

Конструкция оконного фильтра FIR

Описание

пример

b = fir1(n,Wn) использует окно Хэмминга для проектирования nНизкочастотный, полосовой или многополосный FIR-фильтр с линейной фазой. Тип фильтра зависит от количества элементов 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)

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 Гц.

Проектирование фильтра верхних частот FIR 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)

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

Спроектируйте фильтр FIR 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 с помощью окна Ханна. ( '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.

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

свернуть все

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пример: kaiser(n+1,0.5) задает окно Kaiser с параметром shape 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, eds. Программы для цифровой обработки сигналов. Нью-Йорк: IEEE Press, 1979, Алгоритм 5.2.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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