濾波器設計(1) 經典IIR數字濾波器的設計

2021-07-24 08:04:04 字數 3237 閱讀 4235

經典iir(infiniti impulse response)數字濾波器,雖然我在《訊號與系統》和《數字訊號處理》裡學過,但現在已經忘得差不多了。翻翻書,還是能回憶起來。

好像有butterworth濾波器,chebyshevi型、ii型濾波器、橢圓濾波器,等等。根據通帶特性,分為低通、高通、帶通、帶阻、全通等。

設計方法,如果用手算的話,模擬的好像還要查表,數字的好像是先設計模擬的,再用脈衝響應不變法、雙線性變換法設計數字的。

整個設計的步驟大致如下。

1. 根據需求,提出所需濾波器的型別和相應的(模擬)指標;

2. 根據1的指標,轉換為數字指標;

3. 求濾波器的階數;

4. 求濾波器的係數;

5. 根據係數,檢驗其頻率響應是否滿足1的需求。如果滿足,結束;否則,重新設計。

下面給出lpf和hpf的例子。

%% 內容:我自己設計的lpf濾波器

% 版本:v1.0

%% 設計乙個數字低通濾波器 iir

% fp = 500 hz, fs = 750 hz, fs = 8000 hz, rp = 3 db, rs = 50 db

clear;

close all;

clc%% 0. 把所有模擬指標變換為數字指標

fp = 500; % hz

fs = 750;

fs = 8000;

fs2 = fs/2;

rp = 3;

rs = 50;

wp = fp/fs2; % 注意,這個是對(fs/2)歸一化的頻率!!! 量綱為[1]

ws = fs/fs2; % 注意,這個是歸一化頻率!!!

%% 1. butterworth --> 最平坦

% (1) 確定階數

[n,wn] = buttord(wp,ws,rp,rs); % wn 是對(fs/2)歸一化的頻率。 量綱為[1]

% (2) 確定係數

[b,a] = butter(n,wn);

% freqz(b,a,1e4);

[h,w] = freqz(b,a,1e4);

figure;

plot(w/2/pi*fs,20*log10(abs(h)+eps));

figure

zplane(b,a);

%% 2. chebyshev ii型 --> 阻帶等波紋

[n,wn] = cheb2ord(wp,ws,rp,rs);

[b,a] = cheby2(n,rs,wn);

[h,w] = freqz(b,a,1e4);

figure;

plot(w/2/pi*fs,20*log10(abs(h)+eps));

figure

zplane(b,a);

%% 3. chebyshev i型 --> 通帶等波紋

chebyshev i lpf --> 因為要設計低通,所以通帶等波紋的chebyshev ii型肯定是不行的。如下圖。

chebyshev ii lpf。阻帶等波紋還可以。

%% 內容:我自己設計的hpf濾波器

% 版本:v1.0

%% 設計乙個數字高通濾波器 iir

% fp = 200 hz, fs = 1000 hz, fs = 8000 hz, rp = 3 db, rs = 20 db

clear;

close all;

clc%% 0. 把所有模擬指標變換為數字指標

fp = 200; % hz

fs = 800;

fs = 8000;

fs2 = fs/2;

rp = 3;

rs = 20;

wp = fp/fs2; % 注意,這個是對(fs/2)歸一化的頻率!!! 量綱為[1]

ws = fs/fs2; % 注意,這個是歸一化頻率!!!

%% 1. butterworth --> 最平坦

% (1) 確定階數

[n,wn] = buttord(wp,ws,rp,rs); % wn 是對(fs/2)歸一化的頻率。 量綱為[1]

% (2) 確定係數

[b,a] = butter(n,wn,'high');

% freqz(b,a,1e4);

[h,w] = freqz(b,a,1e4);

figure(1);

plot(w/2/pi*fs,20*log10(abs(h)+eps));

%% 2. chebyshev ii型 --> 阻帶等波紋

[n,wn] = cheb2ord(wp,ws,rp,rs);

[b,a] = cheby2(n,rs,wn,'high');

[h,w] = freqz(b,a,1e4);

figure(2);

plot(w/2/pi*fs,20*log10(abs(h)+eps));

%% 3. chebyshev i型 --> 通帶等波紋

[n,wn] = cheb1ord(wp,ws,rp,rs);

[b,a] = cheby1(n,rs,wn,'high');

[h,w] = freqz(b,a,1e4);

figure(3);

plot(w/2/pi*fs,20*log10(abs(h)+eps));

chebyshev i lpf --> 因為要設計高通,所以阻帶等波紋的chebyshev i型是不行的。

阻帶等波紋,相當於是會有很多低頻也能通過hpf。明顯不能實現hpf的功能。

IIR數字濾波器設計

1 iir數字濾波器的差分方程和系統函式 iir數字濾波器是一類遞迴型的線性時不變因果系統,其差分方程可以寫為 y n i 0maix n i i 1nbiy n i y n i 0maix n i i 1nbiy n i 進行z變換,可得 y z i 0maiz ix z i 1nbiz iy z...

IIR數字濾波器實現

題目 16k取樣率音訊資料下取樣到 8k取樣率 求解方案分析 直接每隔乙個取乙個取樣值,這樣就可以得到 8k取樣率的資料。但是這樣明顯會有問題。按照取樣率變換理論,首先應該通過乙個低通濾波器,濾掉 pi 2,pi 這個區間上的頻率,以防止下取樣造成的頻率混疊。這個低通濾波器在很多書上都用 fir濾波...

數字濾波器 FIR和IIR

傳統的線性數字濾波器一般有兩種型別,有限衝激響應 fir 濾波器和無限衝激響應 iir 濾波器。fir數字濾波器只用當前和過去的輸入樣點值來得到當前的輸出樣點值,過去的輸出樣點值乙個也未用到。給定乙個有限持續時間的非0輸入值,fir濾波器給出乙個有限持續時間的非0輸出值。給定乙個全為0的輸入,fir...