作业帮 > 综合 > 作业

matlab做傅立叶变换

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/06/13 03:26:03
matlab做傅立叶变换
用MATLAB做傅立叶变换,频谱图像不正确
   T=4;
N=400;
t=linspace(-T/2,T/2-T/N,N)';
x=sin(pi*t)./(pi*t);
h=cos(100*pi*t);
y=x+h;
z=y+0.5*y.^2;
OMG=16*pi;
K=200;
omg=linspace(-OMG/2,OMG/2-T/N,K)';
Z=0*OMG;
for k=1:K
Z(k)=0;
for n=1:N
    Z(k)=Z(k)+T/N*z(n)*exp(-j*om
g(k)*t(n));

end
end
zs=0*t;
for n=1:N
zs(n)=0;
for k=1:K
    zs(n)=zs(n)+OMG/2/pi/K*Z(k)*exp(j*omg(k)*t(n));
end
end 
plot(omg,Z)
matlab做傅立叶变换
t=linspace(-T/2,T/2,N)';这一行这样改就可以.按原来的写法,t里会出现一个0,带入exp函数后导致出错.

再问: 这个是sinc(pi/t)的傅里叶变换图像,为什么这个不是滤波器的形状。。。。才学这个求指点。。。。。代码的问题吗????
再答: 我运行做出来的图不是那样的。核对一下代码吧。clear all; close all
T=4;
N=400;
t=linspace(-T/2,T/2,N)';
x=sin(pi*t)./(pi*t);
h=cos(100*pi*t);
y=x+h;
z=y+0.5*y.^2;
OMG=16*pi;
K=200;
omg=linspace(-OMG/2,OMG/2-T/N,K)';
Z=0*OMG;
for k=1:K
    Z(k)=0;
    for n=1:N
        Z(k)=Z(k)+T/N*z(n)*exp(-1j*omg(k)*t(n));
    end    
end
zs=0*t;
for n=1:N    
    zs(n)=0;    
    for k=1:K        
        zs(n)=zs(n)+OMG/2/pi/K*Z(k)*exp(1j*omg(k)*t(n));        
    end    
end
plot(omg, Z)