解释代码%频率采样法 N=20; alpha=(N-1)/2; l=0:N-1; wl=(2*pi/N)*l; Hrs=[1,1,1,zeros(1,15),1,1]; Hdr=[1,1,0,0];wdl=[0,0.25,0.25,1]; k1=0:floor((N-1)/2); k2=floor((N-1)/2)+1:N-1; angH=[-alpha*(2*pi)/N*k1,alpha*(2*pi)/N*(N-k2)]; H=Hrs.*exp(j*angH); h=ifft(H,N); w=[0:500]*pi/500; H=freqz(h,1,w); [Hr,wr]=zerophase(h); subplot(2,2,1); plot(wdl,Hdr,wl(1:11)/pi,Hrs(1:11),'o'); axis([0,1,-0.1,1.1]);xlabel('\omega(\pi)');ylabel('Hr(k)'); title('理想幅频响应'); subplot(2,2,2);stem(l,h,'filled'); axis([0,N-1,-0.1,0.3]);xlabel('n');ylabel('h(n)'); title('单位脉冲响应'); subplot(2,2,3); plot(wr/pi,Hr,wl(1:11)/pi,Hrs(1:11),'o'); axis([0,1,-0.2,1.2]);xlabel('\omega(\pi)');ylabel('Hr(w)'); title('实际幅频响应'); subplot(224); plot(w/pi,20*log10((abs(H)/max(abs(H))))); axis([0,1,-50,5]);xlabel('\omega(\pi)');ylabel('dB'); title('幅度响应');
时间: 2024-04-05 14:29:20 浏览: 213
FIR 设计:设计一个阶数为 27 且截止频率为 (0.2, 0.6) 的带通 FIR。 采样频率为 fs=1kHz。-matlab开发
5星 · 资源好评率100%
这是一个使用频率采样法设计FIR滤波器的代码。其中,N表示滤波器的阶数,alpha表示滤波器的中心位置,l表示时域序列,wl表示频率序列。Hrs表示理想幅频响应,Hdr和wdl分别表示带阻滤波器的截止频率和权重。代码中通过计算得到Hrs对应的相位角度angH,然后通过Hrs和angH计算得到滤波器的频域响应H。再通过ifft函数计算得到滤波器的单位脉冲响应h,并使用freqz函数计算得到频率响应H。最后,通过zerophase函数计算得到零相位滤波器的频率响应Hr和角频率wr,并在图中展示了理想幅频响应、单位脉冲响应、实际幅频响应和幅度响应。
阅读全文