FIR濾波器的設計

2021-09-28 12:53:35 字數 3920 閱讀 2097

matlab可以使用fir1函式設計低通、高通、低通、帶通等具有嚴格線性相位特性的濾波器。

fir1函式的幾種語法如下:

b=

fir1

(n,wn)

; b=

fir1

(n,wn,

'ftype');

b=fir1

(n,wn,

'ftype'

,window)

b=fir1(.

..,'noscale'

)

各個引數的含義:

設計濾波器,採用漢明窗,長度41(階數40),取樣頻率2000hz:

clear all; close all; clc;

% 濾波器長度

n=41

;%取樣頻率

fs=2000

;

%各種濾波器的特徵頻率

fc_lpf=

200;

fc_hpf=

200;

fp_bandpass=

[200

400]

;fc_stop=

[200

400];

%以取樣頻率的一般,對頻率歸一化

wn_lpf=fc_lpf

2/fs;

wn_hpf=fc_hpf

2/fs;

wn_bandpass=fp_bandpass

2/fs;

wn_stop=fc_stop

2/fs;

%採用fir1函式設計fir濾波器

b_lpf=

fir1

(n-1

,wn_lpf)

;b_hpf=

fir1

(n-1

,wn_hpf,

『high』);

b_bandpass=

fir1

(n-1

,wn_bandpass,

『bandpass』);

b_stop=

fir1

(n-1

,wn_stop,

『stop』);

%求幅頻響應

m_lpf=

20log

(abs

(fft

(b_lpf)))

/log(10

);m_hpf=

20log

(abs

(fft

(b_hpf)))

/log(10

);m_bandpass=

20log

(abs

(fft

(b_bandpass)))

/log(10

);m_stop=

20log

(abs

(fft

(b_stop)))

/log(10

);% 設定頻率響應的橫座標單位為hz

x_f=0:

(fs/

length

(m_lpf)

):fs/2;

% 單位脈衝響應

subplot(4

,2,1

);stem

(b_lpf)

;xlabel

(『n』);

ylabel

(『h(n)』);

legend

(『lpf』);

subplot(4

,2,3

);stem

(b_hpf)

;xlabel

(『n』);

ylabel

(『h(n)』);

legend

(『hpf』);

subplot(4

,2,5

);stem

(b_bandpass)

;xlabel

(『n』);

ylabel

(『h(n)』);

legend

(『bandpass』);

subplot(4

,2,7

);stem

(b_stop)

;xlabel

(『n』);

ylabel

(『h(n)』);

legend

(『stop』);

% 幅頻響應

subplot(4

,2,2

);plot

(x_f,

m_lpf(1

:length

(x_f)))

;xlabel

(『頻率(hz)』);

ylabel

(『幅度(db)』

,『fontsize』,8

);legend

(『lpf』

)subplot(4

,2,4

);plot

(x_f,

m_hpf(1

:length

(x_f)))

;xlabel

(『頻率(hz)』);

ylabel

(『幅度(db)』

,『fontsize』,8

);legend

(『hpf』

)subplot(4

,2,6

);plot

(x_f,

m_bandpass(1

:length

(x_f)))

;xlabel

(『頻率(hz)』);

ylabel

(『幅度(db)』

,『fontsize』,8

);legend

(『bandpass』

)subplot(4

,2,8

);plot

(x_f,

m_stop(1

:length

(x_f)))

;xlabel

(『頻率(hz)』);

ylabel

(『幅度(db)』

,『fontsize』,8

);legend

(『stop』);

**脈衝相應和幅頻響應圖:

前面已經設計了低通,帶通,高通的濾波器,根據引數設定得到了濾波器係數:

b_lpf、b_hpf、b_bandpass、b_stop

假設我們現在由原始資料xx,要對xx進行濾波,得到資料yy,在matlab應該怎麼操作呢

就一句:

yy=

filter

(b_lpf,

1,xx)

;

matlab可以使用fir1函式設計低通、高通、低通、帶通等具有嚴格線性相位特性的濾波器。

fir1函式的幾種語法如下:

b=

fir1

(n,wn)

; b=

fir1

(n,wn,

'ftype');

b=fir1

(n,wn,

'ftype'

,window)

b=fir1(.

..,'noscale'

)

各個引數的含義:

設計濾波器,採用漢明窗,長度41(階數40),取樣頻率2000hz:

clear all; close all; clc;

% 濾波器長度

n=41

;%取樣頻率

fs=2000

;

FIR濾波器設計

fir濾波器的優越性 相位對應為嚴格的線性,不存在延遲失真,僅僅有固定的時間延遲 因為不存在穩定性問題,設計相對簡單 僅僅包括實數演算法,不涉及複數演算法,不須要遞推運算,長度為m,階數為m 1,計算值約為m 2。關於fir濾波器的幅頻特性和相頻特性。在人們不關心相位時,能夠讓幅頻特性常為正,原來為...

FIR濾波器設計

該文件為了說明fir濾波器,iir濾波器的原理,數學含義,設計方法 一 原理 1 fir有限衝擊響應,iir無限衝擊響應。前者無反饋,只與當前和歷史輸入有關,後者有反饋,不僅與當前和歷史輸入有關,還與歷史輸出有關。fir輸出相位線性,設計簡單,但是階數更高 iir輸出相位不線性,設計困難,但相同效能...

FIR 帶通濾波器設計

本文將針對乙個含有 5hz 15hz 和 30hz 的混和正弦波訊號,設計乙個 fir 帶通濾波器,給出利用 matlab 實現的三種方法 程式設計法 fdatool 設計法和 sptool 設計法。參 數要求 取樣頻率 fs 100hz 通帶下限截止頻率 fc1 10 hz 通帶上限截止頻率 fc...