Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2008-03-19
年龄: 39
帖子: 2
声望力: 0 ![]() |
![]()
哪位大侠能提供小弟关于FIR低通滤波器的完整程序 不胜感激
PS: 使用的是哈明窗 和 凯泽窗 !!!!!! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2007-05-27
帖子: 18
声望力: 18 ![]() |
![]()
仅供参考哈:
fsample=50000; %采样频率 fc=10000; %截止频率 wc=2*fc/fsample; window=hamming(11); b=fir1(10,wc,window); freqz(b); |
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-03-19
年龄: 39
帖子: 2
声望力: 0 ![]() |
![]() |
![]() |
![]() |
![]() |
#4 |
普通会员
注册日期: 2008-02-26
年龄: 41
帖子: 71
声望力: 24 ![]() ![]() ![]() |
![]()
%有四种窗口类型供选择
b=1; close all; i=0; while(b); temp=menu('选择窗函数长度N','N=10','N=15','N=20','N=25','N=30','N=33','N=35','N=40','N=45','N=50','N=55','N=60','N=64'); menu1=[10,15,20,25,30,33,35,40,45,50,55,60,64]; N=menu1(temp); temp=menu('选择逼近理想低通滤波器截止频率Wc','Wc=pi/4','Wc=pi/2','Wc=3*pi/4','Wc=pi','Wc=0.5','Wc=1.0','Wc=1.5','Wc=2.0','Wc=2.5','Wc=3.0'); menu2=[pi/4,pi/2,3*pi/4,pi,0.5,1,1.5,2,2.5,3]; w=menu2(temp); n=[0 ![]() hd=ideal(w,N); %得到理想低通滤波器 k=menu('请选择窗口类型:','boxcar','hamming','hanning','blackman'); if k==1 B=boxcar(N); string=['Boxcar','N=',num2str(N)]; else if k==2 B=hamming(N); string=['Hamming','N=',num2str(N)]; else if k==3 B=hanning(N); string=['Hanning','N=',num2str(N)]; else if k==4 B=blackman(N); string=['Blackman','N=',num2str(N)]; end end end end h=hd.*(B)'; %得到FIR数字滤波器 [H,m]=freqz(h,[1],1024,'whole'); %求其频率响应 mag=abs(H); %得到幅值 db=20*log10((mag+eps)/max(mag)); pha=angle(H); %得到相位 i=i+1; figure(i) subplot(2,2,1); n=0:N-1; stem(n,h,'.'); axis([0,N-1,-0.1,0.3]); hold on; n=0:N-1; x=zeros(N); plot(n,x,'-'); xlabel('n'); ylabel('h(n)'); title('实际低通滤波器的h(n)'); text((0.3*N),0.27,string); hold off; subplot(2,2,2); plot(m/pi,db); axis([0,1,-100,0]); xlabel('w/pi'); ylabel('dB'); title('衰减特性(dB)'); grid; subplot(2,2,3); plot(m,pha); hold on; n=0:7; x=zeros(8); plot(n,x,'-'); title('相频特性'); xlabel('频率(rad)'); ylabel('相位(rad)'); axis([0,3.15,-4,4]); subplot(2,2,4); plot(m,mag); title('频率特性'); xlabel('频率W(rad)'); ylabel('幅值'); axis([0,3.15,0,1.5]); text(0.9,1.2,string); b=menu('Do You want To Continue ?','Yes','No'); if b==2 b=0; end end temp=menu('Close All Figure ?','Yes','No'); if temp==1 close all end |
![]() |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[求助]以知方程组,求解(好难,求助) | 大哥救命啊 | MATLAB论坛 | 0 | 2008-04-18 20:37 |
matlab编写板卡驱动 | emirlee | MATLAB论坛 | 2 | 2008-04-18 09:16 |
【求助】如何产生随机解 | zhailiangjun | MATLAB论坛 | 2 | 2008-03-07 16:12 |
【求助】一个简单的作图问题 | hinac | MATLAB论坛 | 3 | 2007-07-10 11:22 |
【求助】如何在一个FRAMEL里面显示图象(根据frame的大小) | sabby | MATLAB论坛 | 0 | 2007-07-09 17:32 |