?? firdf_design.m
字號:
%【設計分析】首先利用remezord 函數估算濾波器
%的可能階數n ,然后利用remez 函數來實現該濾波
%器。最后判斷所得的濾波器指標是否滿足阻帶衰減
%的要求。若是,則獲解;若否,則需提高濾波器的階
%數n 直到其技術指標滿足設計要求為止。
%程序源代碼如下:
clear;
clc;
%function FIRDF_design
Wp = 0.4*pi; %input ('請輸入通帶截止頻率:') ;
Ws = 0.6*pi; %input ('請輸入阻帶截止頻率:') ;
delta1 = 0.01; %input ('請輸入通帶容許偏差:') ;
delta2 = 0.001; %input ('請輸入阻帶容許偏差:') ;
Ap = 20 * log10 (2/ (1 - delta1) - 1)
%設計要求的通帶最大衰減(db)
As = - 20 * log10 (delta2/ (delta1 + 1) )
%設計要求的阻帶最小衰減(db)
delta_w = 2 * pi/ 1000 ;
Wsi =Ws/delta_w + 1; Wpi =Wp/delta_w;
f = [Wp/pi ,Ws/pi ]; m = [ 1 ,0 ]; dev = [ delta1 ,delta2 ] ;
[ n ,fo ,ao ,weights ] = remezord (f ,m ,dev)
h = remez(n ,fo ,ao ,weights) ;
[ H ,w] =freqz (h ,1 ,1000,'whole') ;
H = (H(1 :1 :501) )'; w = (w(1 :1 :501) )'; mag = abs (H) ;
db = 20 * log10 ( (mag + eps) / max(mag) ) ;
Asd = - max(db (Wsi :1 :501) )
while Asd < As %判斷阻帶衰減指標是否滿足設計要求,以完成對n 的調整。
n = n + 1 ;
h = remez (n ,fo ,ao ,weights) ;
[ H ,w] =freqz (h ,1 ,1000,'whole') ;
H = ( H(1 :1 :501) )'; w = ( w(1 :1 :501) )'; mag = abs (H) ;
db = 20 * log10 ( (mag + eps) / max(mag) ) ;
Asd = - max(db (Wsi :1 :501) ) ;
end
M = n;
h = remez (M,fo ,ao ,weights) ;
[ H ,w] =freqz (h ,1 ,1000,'whole') ;
H = (H(1 :1 :501) )'; w = (w(1 :1 :501) )'; mag = abs (H) ;
db = 20 * log10 ( (mag + eps) / max(mag) ) ;
Apd = - (min (db (1 :1 :Wp/ delta_w + 1) ) )
%實際得到的最大通帶衰減
Asd = - round(max(db (Wsi :1 :501) ) )
%實際得到的最小阻帶衰減
figure ; %畫圖
subplot (2, 1, 1) ;
stem( 0:1:M , h) ;
title( '實際的脈沖響應', 'fontsize', 8)
axis ( [0, M, -0.1, 0.5 ]) ;
xlabel ('n','fontsize',8);
ylabel ('h(n) ','fontsize',8)
set( gca, 'XTickMode', 'manual', 'XTick', [ 0 M])
set( gca, 'YTickMode', 'manual', 'YTick', ( -0.1:0.1:0.5 ))
subplot (2 ,1 ,2) ;
plot (w/pi ,db)
title ('以分貝形式表示的幅度響應','fontsize',8) ;
axis ( [0 ,1 , -100 ,10 ]) ;
Xlabel( 'frequency( * pi) ', 'fontsize',8) ;
Ylabel( 'db', 'fontsize',8) ;
set (gca ,'XTickMode','manual','XTick', [ 0 ,0.4 ,0.6 ,1 ])
set (gca ,'YTickMode','manual','YTick', [ -60 0 ])
set (gca ,'YTickLabelMode','manual','YTickLabel',{'60', '0'})
grid
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -