| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 
	 | 
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2009-02-15 
				
				年龄: 35 
				
					帖子: 1
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			matlab过滤器的缺点? 
		
		
		
		
		
		
		
	最近找了一个过滤器,发现滤波器还是有问题啊。。。别的不说,请看代码: clear; fc1=22999;%通带下限截止频率fc1=22999 Hz fc2=23001;%通带上限截止频率fc2=23001 Hz fs=102400;%采样频率fs=102400Hz N= 50000;%采样点数目 t = (0:N)/fs; f1=5000; f2=15000; f3=30000; f4=23000; f5=50000; f6=60000; s1=CreateLine(f1,t); s2=CreateLine(f2,t); s3=CreateLine(f3,t); s4=CreateLine(f4,t); s5=CreateLine(f5,t); s6=CreateLine(f6,t); s=s1+s2+s3+s4+s5+s6; sf = beltfilter(s,fs,20,fc1,fc2);%对信号s进行滤波 figure(1); subplot(311); plot(t,s);%作正弦信号的时域波形 xlabel('t'); ylabel('y'); title('原混合波形'); figure(1); subplot(312); xl=length(sf); t=t(1:xl); plot(t,sf);%作正弦信号的时域波形 xlabel('t'); ylabel('y'); title('过滤后波形'); subplot(313); s3=s3(1:xl); plot(t,s3);%作正弦信号的时域波形 xlabel('t'); ylabel('s3'); title('原波形'); N=xl; xf = 2*abs(fftn(sf))/N; xf = xf(1:N/2); df = fs/N; %频率分辨率Hz f = (0:N/2-1)*df; %频域序列 cMax = max(xf) ; figure(2); subplot(1,1,1); plot(f, xf); xlabel('f/Hz'); f(find(xf>=max(xf))) CreateLine: %创建一个序列,随机把一些连续值清空 %a-频率 %t-采样时间点序列 function xl=CreateLine(a,t) N=length(t); %振幅 iZF=fix(100*rand); %初始相位 iCSXW=rand; %开始清除点 iStart=fix(N*rand); %结束清除点 iStop=fix(N*rand); %使iStart<iStop if iStart>iStop iTmp=iStop;iStop=iStart;iStart=iTmp; end; xl=iZF*sin(a*2*pi*t+iCSXW); for k=iStart:iStop xl(k)=0; end; beltfilter  注:网上找到的)%带通滤波 %x-输入信号 %fs-输入信号采样频率 %M-滤波器半阶数 %fl-下截止频率 %fh-上截止频率 %xl-返回的滤波结果,其长度为原序列长度减少2M,去掉了前M和后M个不正确的点 function xl=beltfilter(x,fs,M,fl,fh) N=length(x)-2*M; [i j]=size(x); if i~=1 x=x'; end k=1:M; w=0.5+0.5*cos(pi*k/M); wl=2*pi*fl/fs; wh=2*pi*fh/fs; h(1)=(wh-wl)/pi; h(2:M+1)=(sin(wh*k)-sin(wl*k))./(pi*k).*w; for k=1:N kk=k-1+M; xl(k)=x(kk+1)*h(1)+sum(h(2:M+1).*(x(kk+2:kk+M+1)+x(kk:-1:kk-M+1))); end if i~=1 xl=xl'; end 大家看看结果就知道了$$$$  
		 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
![]()  | 
	
	
		
  | 
	
		 | 
			 
			相似的主题
		 | 
	||||
| 主题 | 主题作者 | 版面 | 回复 | 最后发表 | 
| [求助] | xierui | MATLAB论坛 | 0 | 2009-03-13 11:09 | 
| [求助]请求大侠解答简单问题 | fenyun | MATLAB论坛 | 1 | 2009-02-11 03:13 | 
| [资料]神经网络课程讲稿(北工大) | jinjinai2008 | MATLAB论坛 | 2 | 2008-12-15 14:47 | 
| [求助]如何用FFT从数据序列中提取相位信息? | leechau | Origin论坛 | 0 | 2008-11-05 21:50 | 
| 【求助】这个微分方程怎么写成函数文件呢? | grasszhang | MATLAB论坛 | 0 | 2007-08-30 15:25 |