[n,wn]
=buttord(wp,ws,rp,rs)
不加『s』就可以直接求出數字濾波器的係數
[b,a]
=butter(n,wn,
's')
;% 求巴特沃斯濾波器係數
現設計一帶通濾波器,要求通帶頻率為1.5~10hz,阻頻率為1和12hz,ap=3,as=15,設計巴特沃斯濾波器
clear all
; clc; close all
;load bzsdata.mat % 讀入資料
n=length(bzs)
;% 原始資料長t=(
0:n-1)
/fs;
% 設定時間
fp1=
[1.510]
fs1=[1
12]wp1=
2*fp1/fs;
ws1=
2*fs1/fs;
ap=3
;as=15;
[n,wn]
=buttord(wp1,ws1,ap,as)
[b1,a1]
=butter(n,wn)
;freqz(b1,a1,
300,fs)
設計出的濾波器頻率響應曲線為:
可以看到濾波器輸出產生了溢位和沒有數值。這是因為低通濾波器的截止頻率或帶通濾波器的中心頻率相對取樣頻率很低,或者濾波器的過渡帶很窄,則在設計濾波器後會發現濾波器階數比較大,這種情況下通常採用降低訊號的取樣頻率
現修改如下:
clear all
; clc; close all
;load bzsdata.mat % 讀入資料
n=length(bzs)
;% 原始資料長t=(
0:n-1)
/fs;
% 設定時間
x=resample(bzs,1,
5);% 降取樣
n1=length(x)
;% 降取樣後的長度
fs=fs/5;
% 降取樣後的取樣頻率
fs2=fs/2;
% 降取樣後取樣頻率的一半
t1=(
0:n1-1)
/fs;
% 降取樣後的時間刻度
fp1=
[1.510]
;% 通帶頻率
fs1=[1
12];% 阻帶頻率
wp1=fp1/fs2;
% 歸一化通帶頻率
ws1=fs1/fs2;
% 歸一化阻帶頻率
ap=3
; as=15;
% 通帶波紋和阻帶衰減
[n,wn]
=buttord(wp1,ws1,ap,as)
;% 求濾波器原型階數和頻寬
[bn1,an1]
=butter(n,wn)
;% 求數字濾波器係數
[h,f]
=freqz(bn1,an1,
1000
,fs)
;% 求數字濾波器幅頻曲線
y1=filter
(bn1,an1,x)
;% 對降取樣後的資料進行濾波
y=resample(y1,5,
1);% 對濾波器輸出恢復原取樣頻率
% 作圖
figure(1)
subplot 311
; plot(t,bzs,
'k')
;xlabel(
); title(
'原始資料波形'
)subplot 312
; plot(t1,x,
'k')
;xlabel(
); title(
'降取樣後資料波形'
)subplot 313
; plot(t,y,
'k')
xlabel(
); title(
'濾波後資料波形'
)set
(gcf,
'color'
,'w');
figure(2)
plot(f,
abs(h)
,'k');
grid; axis([0
2501.1]);
xlabel(
'頻率/hz'
); ylabel(
'幅值'
)title(
'巴特沃斯濾波器的幅值響應'
)set
(gcf,
'color'
,'w'
);
注意,在實際應用中,buttord函式直接進行數字濾波器階數設計時wp,ws的計算方法如上段所示,直接進行歸一化,原頻率除以fs/2。注意與模擬濾波器設計的區別 matlab數字濾波器
matlab提供了專門用於求離散系統頻響特性的函式freqz 呼叫freqz 的格式有以下兩種 1 h,w freqz b,a,n 2 h,w freqz b,a,n,whole 1 中b和a分別為離散系統的系統函式分子 分母多項式的係數向量,返回量h則包含了離散系統頻響在 0 pi範圍內n個頻率等...
matlab 6 5 設計數字濾波器
1 用脈衝響應不變法設計乙個butterworth低通數字濾波器,通帶截止頻率為0.4 通帶波紋rp小於3db,阻帶邊界頻率為0.6 阻帶衰減大於15db,取樣頻率fs 10000hz。假設乙個訊號 其中f1 1000hz,f2 4000hz。試將原訊號與通過該濾波器的輸出訊號進行比較。用經典法設計...
數字濾波器
數字濾波器,可以分為兩大類 一類為經典濾波器,輸入訊號中的有用成分和希望濾除的成分頻率不同.一類為現代濾波器,其輸入訊號中有用訊號和希望濾除的訊號頻帶交疊.經典濾波器,從頻域上可以分為低通 高通 帶通 帶阻濾波器 從時域特性上來看,數字濾波器可以分為fir 有限衝激響應數字濾波器 和iir 無限衝激...