![]() |
[求助]基于频域抽样法的FIR数字带阻滤波器的设计
先说一下,偶很菜的,对这东西一点都不懂,要做课程设计,给逼的:cry:
==================== 基于频域抽样法的FIR数字带阻滤波器的设计 参数: Ωs=2π*1.5*1000rad/sec, Ωp1=2π*7.5*1000rad/sec, Ωst1=2π*2.25*1000rad/sec, Ωst2=2π*4.5*1000rad/sec, Ωp2=2π*6*1000rad/sec, σ1<=1dB,σ2>=50dB。 ==================== 以下是我编的一个肯定有问题的程序: N=11;a=(N-1)/2; m=0:N-1;W1=(2*pi/N)*m; Hideal=[0.2,1,1,0.2,0,0,0,0.7,1,1,0.7]; Hdr=[1,0,0,1]; Wd=[0.2,1,1,0.7]; k1=0:floor((N-1)/2);k2=(floor((N-1)/2)+1):N-1; angH=[-a*2*pi*k1/N,a*2*pi*(N-k2)/N]; H=Hideal.*exp(j*angH); h=real(ifft(H,N)); [H2,w]=freqz(h,1); figure(1); subplot(3,1,1); plot(W1(1:5)/pi,Hideal(1:5),'o',Wd,Hdr); axis([0,1,-0.2,1.2]);title('频率样本'); xlabel('频率(单位pi)');ylabel('Hideal(k)'); figure(2); subplot(3,1,2); stem(m,h);title('单位脉冲响应'); xlabel('n');ylabel('h(n)'); figure(3); subplot(3,1,3); A=max(abs(H2)); plot(w/pi,20*log10(abs(H2)/A)); axis([0,1,-100,10]);grid; title('幅度响应');xlabel('频率(单位pi)');ylabel('dB'); ======================= 忘高手能给出Matlab程序!不胜感激! |
N=11;a=(N-1)/2;
m=0:N-1;W1=(2*pi/N)*m; Hideal=[0.01,ones(1,3),0.2,zeros(1,6)];%此处为插值 k1=0:floor((N-1)/2);k2=(floor((N-1)/2)+1):N-1; angH=[-a*2*pi*k1/N,a*2*pi*(N-k2)/N]; H=Hideal.*exp(j*angH); h=ifft(H,N);%此处不必取实数 [H2,w]=freqz(h,1); figure(1); subplot(3,1,1); plot(W1(1:5)/pi,Hideal(1:5),'o',Wd,Hdr); axis([0,1,-0.2,1.2]);title('频率样本'); xlabel('频率(单位pi)');ylabel('Hideal(k)'); figure(2); subplot(3,1,2); stem(m,h);title('单位脉冲响应'); xlabel('n');ylabel('h(n)'); figure(3); subplot(3,1,3); A=max(abs(H2)); plot(w/pi,20*log10(abs(H2)/A)); axis([0,1,-100,10]);grid; title('幅度响应');xlabel('频率(单位pi)');ylabel('dB'); 你的程序中要注意抽样点,H(k)的选择原则是通带内为1,阻带内为0,另外在插值时最好不要从0直接跳变到1 |
所有时间均为北京时间。现在的时间是 09:45。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.