|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本帖最后由 ferrarichen 于 2012-9-4 15:31 编辑
最近开始研究信号的傅里叶变换问题,写了一段代码原意是把矩形窗和三角窗进行傅里叶变换和反变换:我个人理解变换后应该得到相同的矩形窗和三角窗。
现在遇到几个问题,应该比较基本的。
问题(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:刚刚开始研究,可能很多低级错误,请各位不吝赐教。先谢过!
|
|