|  | 
 
| 
本帖最后由 ferrarichen 于 2012-9-4 15:31 编辑
x
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。您需要 登录 才可以下载或查看,没有账号?我要加入 
  
 最近开始研究信号的傅里叶变换问题,写了一段代码原意是把矩形窗和三角窗进行傅里叶变换和反变换:我个人理解变换后应该得到相同的矩形窗和三角窗。
 现在遇到几个问题,应该比较基本的。
 问题(1)我理解的能得到原来的矩形窗和三角窗,这个理解是不是对的?
 问题(2)请帮我查看一下matlab的代码是否有问题,重点在FT和IFT两个函数;
 问题(3)用三角窗进行变换和反变换,能得到一个三角窗,但是幅度有巨大变化,具体请看图,能给一些解释吗?还是我的代码有问题?
 问题(4)用矩形窗进行变换和反变换,得不到矩形窗,具体请看图,能给一些解释吗?还是我的代码有问题?
 请各位大侠不吝赐教。matlab代码如下:
 clear;
 pi=3.1415926;
 
 N=101;
 
 %%%%%%%%%%%%%%%%%%%%%%%设置n序列
 
 start=0;
 n=start:1:start+N-1;
 
 %%%%%%%%%%%%%%%%%%%%%%%生成时序函数x
 
 x=bartlett(N); %(x=rect(N));
 
 %%%%%%%%%%%%%%%%%%%%%%%设置频率域采样间隔和范围
 
 m=1;
 k=linspace(-m*pi,m*pi,1000);
 
 %%%%%%%%%%%%%%%%%%%%%%%进行傅里叶变换和反变换
 
 X=FT(k,x,n);
 
 %(
 %temp=0;
 %for i=1:length(k)
 %    temp=temp+X(i);
 %end
 %cur=temp/length(k);
 %Z=X-cur;
 %Y=IFT(k,Z,n);
 %)
 
 Y=IFT(k,X,n);
 
 %%%%%%%%%%%%%%%%%%%%%%%%画出时序函数x,频谱X和反变换的时序函数Y
 
 figure
 plot(n,x,'g');
 figure
 plot(k,abs(X),'r');
 figure
 plot(n,abs(Y),'b');
 
 %%%%%%%%%%%%%%%%%%%%%%%傅里叶变换函数 k:频率序列 x:时序函数;n:时序序列
 
 function y=FT(k,x,n);
 
 pi=3.1415926;
 
 for t=1:length(k)
 y(t)=sum(x.*(exp(-j*k(t).*n)));
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%傅里叶反变换函数 K:频率序列 x:频谱; n:时序序列
 
 function y=IFT(k,x,n);
 
 pi=3.1415926;
 
 for t=1:length(n)
 y(t)=sum(x.*(exp(j*n(t).*k)))/(2*pi);
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%生成N点三角窗函数
 
 function y=bartlett(N);
 
 if (mod(N,2)==0)
 N1=(N-2)/2;
 else
 N1=(N-1)/2;
 end
 
 for i=1:N1+1
 y(i)=2*(i-1)/(N-1);
 end
 for i=N1+2:N
 y(i)=2-2*(i-1)/(N-1);
 end
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%%生成N点矩形窗函数
 
 function y=rect(N);
 
 i=1:N;
 y(i)=1;
 
 三角窗   三角窗傅里叶变换   
 三角窗傅里叶反变换   矩形窗   矩形窗傅里叶变换   矩形窗傅里叶反变换   
 PS1:另外写了一段 “隔直”的代码,就是代码中用“()”括起来 并注释掉的部分,请问是这样进行隔直吗?
 PS2:刚刚开始研究,可能很多低级错误,请各位不吝赐教。先谢过!
 
 
 
 | 
 |