| Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) | 
![]()  | 
	
| 		
			
			 | 
		#1 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-01-15 
				
				年龄: 27 
				
					帖子: 2
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			MATLAB程序 
		
		
		
			clear fs=1000 ; k=1; t=0:1/fs:0.6; f1=300; x=10*sin(2*pi*f1*t) for n=64:64:2048 n1(k)=n; y=fft(x,n); n=0:length(y)-1; f=fs*n/length(y); plot(f,abs(y)) [a,b]=max(abs(y)); z=f(b)-300 P3(k)=abs(z) k=k+1; end plot(n1,P3) 我想问两个问题: 1.为什么刚开始64~200左右误差非常的大 2.为什么会出现振荡现象 谢谢了~  | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#2 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2007-12-14 
				
				
				
					帖子: 10
				 
				
				
				声望力: 18 ![]()  | 
	
	
	
		
		
			
			 
			
			起始时FFT数据点数不够,如64个点,其最小频率误差为fs/64=15.625Hz,也就是说你偏差一个数据点,就是15.625Hz,随着你FFT点数的增大,其误差相应的越来越小。
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 | 
| 		
			
			 | 
		#3 | 
| 
			
			 初级会员 
			
			
			
			注册日期: 2008-03-28 
				
				年龄: 40 
				
					帖子: 1
				 
				
				
				声望力: 0 ![]()  | 
	
	
	
		
		
			
			 
			
			谢谢了,很有用!!!
		 
		
		
		
		
		
		
		
	 | 
| 
		 | 
	
	
	
		
		
		
		
			 
		
		
		
		
		
		
		
			
		
		
		
	 |