matlab滤波器的设计

求出濾波器的階數以及 3dB 截止頻率後,可用相應的 Matlab 函數計算出實現傳遞函數
的分子分母係數來。
巴特沃斯型濾波器是通帶內最大平坦、帶外單調下降型的,其計算命令是:
[b,a] = butter(n,Wn) % 計算數字低通或帶通情況
[b,a] = butter(n,Wn,’ftype’) % 計算數字高通或帶阻情況
[b,a] = butter(n,Wn,’s’) % 計算模擬低通或帶通情況
[b,a] = butter(n,Wn,’ftype’,’s’)% 計算模擬高通或帶阻情況
其中,對於數字濾波器,Wn 就是 3dB 歸一化截止頻率。對於模擬濾波器,Wn 則是未
歸一化的角頻率(單位 rad/s),與 fn 的關係是 Wn=2*pi*fn。當截止頻率參數為 2 個元素的
向量時,為計算帶通或帶阻濾波器,否則是計算高通或低通濾波器的。當 ftype 為 high 時為
計算高通,當 ftype 為 stop 時為計算帶阻。對於數字濾波器而言,返回值 b,a 分別是傳遞
函數 H(z) 的分子和分母多項式的係數矩陣。對於模擬濾波器則返回值 b,a 分別是傳遞函
數 H(s) 的分子和分母多項式的係數矩陣。

切比雪夫 1 型濾波器是通帶等波紋(Equiripple)、阻帶單調下降型的,其計算命令是:
[b,a] = cheby1(n,Rp,Wn) % 計算數字低通或帶通情況
[b,a] = cheby1(n,Rp,Wn,’ftype’) % 計算數字高通或帶阻情況
[b,a] = cheby1(n,Rp,Wn,’s’) % 計算模擬低通或帶通情況
[b,a] = cheby1(n,Rp,Wn,’ftype’,’s’) % 計算模擬高通或帶阻情況

例子

f_N=8000; % 採樣率
f_p=2100; f_s=2500; R_p=3; R_s=25; % 設計要求指標
Ws=f_s/(f_N/2); Wp=f_p/(f_N/2); % 計算歸一化頻率
[n, Wn]=buttord(Wp,Ws,R_p,R_s); % 計算階數和截止頻率
[b,a]=butter(n, Wn); % 計算H(z)
figure(1);
freqz(b,a, 1000, 8000) % 作出H(z)的幅頻相頻圖, freqz(b,a, 計算點數, 採樣率)
subplot(2,1,1); axis([0 4000 -30 3])
figure(2); % 第二種作圖方法
f=0:40:4000; % 計算頻率點和頻率範圍
z=exp(j*2*pi*f./(f_N)); %
H_z=polyval(b,z)./polyval(a,z); % 計算相應頻率點處H(z)的值
subplot(2,1,1); plot(f, 20*log10(abs(H_z))); % 幅頻特性
axis([0 4000 -40 1]);
xlabel(’頻率 Hz’);ylabel(’幅度 dB’);
subplot(2,1,2); plot(f, angle(H_z)); % 相頻特性
xlabel(’頻率 Hz’);ylabel(’相角 rad’);

原文地址:https://www.cnblogs.com/lianjiehere/p/4142992.html