logo资料库

用一般算法实现FIR滤波器的程序代码及仿真结果.docx

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
例:用频率采样法设计一个 FIR 带通滤波器,技术指标:低阻带边缘频率 1 tw 2.0 , 低通带 边缘频率 1 pw 3.0 ,通 带 边缘频率为 2 pw 7.0 ,高阻 带边缘频率 2 tw 8.0 ,通带最大波动 A p  3.0 dB ,阻带最小衰减 A s  d40 B ,采样点数 N=40。 用一般算法实现 FIR 滤波器的程序代码及仿真结果: 显示数字滤波器频率图形的子程序: function[db,mag,pha,w]=freqz_m2(b,a) [H,w]=freqz(b,a,1000,’whole’); H=(H(1:1:501))’; w=(w(1:1:501))’; mag=abs(H); db=20*log10((mag+eps)/max(mag)); pha=angle(H); 主函数: clear all; N=40;%抽样点数 al=(N-1)/2; wl=(2*pi/N);%抽样间隔 k=0:N-1; T1=0.5;%查表法得到的过渡值 k1=0:floor((N-1)/2);k2=floor((N-1)/2)+1:N-1; angH=[pi/2-al*(2*pi)/N*(k1+0.5),-pi/2+al*(2*pi)/N*(N-k2-0.5)]; wdl=[0 0.3 0.3 0.7 0.7 1]; Hrs=[zeros(1,5),T1,ones(1,9),T1,zeros(1,9),T1,ones(1,9),T1,zeros(1,4)]; Hdk=Hrs.*exp(j*angH);%构成 Hd(k) h1=ifft(Hdk,N);%傅里叶反变换 n=0:1:N-1; h=real(h1.*exp(j*pi*n/N));%实际单位脉冲响应 [db,mag,pha,w]=freqz_m2(h,[1]); plot(w/pi,db); title('频谱特性'); xlabel('频率(xπrad / sample )');ylabel('衰减(dB)'); axis([0 1 -80 10]); grid;
仿真结果:
分享到:
收藏