fir_lp.m

来自「FIR滤波器设计文件」· M 代码 · 共 39 行

M
39
字号
function h=FIR_LP(Wp,Ws,delta1,delta2)
%FIR_LP;   根据指标设计低通FIR滤波器
%输入参数:
%         Wp:通带截止频率,0~pi
%         Ws:阻带截止频率,0~pi
%         delta1:通带容限
%         delta2:阻带容限
%输出参数:
%         h:FIR滤波器系数

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];            %与f对应的幅值
dev=[delta1,delta2];%与f对应的各频带的波动
[n,fo,ao,weights]=firpmord(f,m,dev);
h=firpm(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=firpm(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=firpm(M,fo,ao,weights);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?