使用Matlab时的复傅里叶逆变换

时间:2015-11-25 20:49:07

标签: matlab signal-processing fft ifft

我正在使用Matlab,我正在尝试找到对称函数的ifft,但我不断得到一个复杂的结果。 我尝试过使用circshift,但我似乎无法弄明白。 我想知道是否有人可以提供帮助? 这是代码:

t=0:0.001:0.119;

for i=1:120

comp1(i)=9.8*cos(2*pi*200*t(i));

comp2(i)=7.6*cos(2*pi*145*t(i)+30/57.3);

comp3(i)=5.4*cos(2*pi*93*t(i)+70/57.3);

comp4(i)=3.2*cos(2*pi*58*t(i)+160/57.3);

comp5(i)=cos(2*pi*35*t(i)+320/57.3);

YS=comp1+comp2+comp3+comp4+comp5;
end

Q=1000/(2*60)*[-59:1:60];

Box=[zeros(1,40),ones(1,5),zeros(1,30),ones(1,5),zeros(1,40)];

Box1=circshift(Box,[0,60]);

F=ifft(Box1);

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

(我不确定代码中的YSQ是什么,所以我只是忽略它们。

长度为X的真实信号x的变换N具有以下属性

X(k) = X(N-k)*

表示k=1,...,N-1,其中*是复共轭的。对于真正的变换(如在您的示例中),您可以忽略*。请注意,索引从0变为N-1,因此对于k=0,未定义上述属性,因为最后一项的索引为N-1(没有{ {1}})。

在您的情况下,信号X(N)没有此属性,Box也没有(检查它!)。试试例如:

Box1

此信号 具有此属性,其Box = [zeros(1,41),ones(1,5),zeros(1,29),ones(1,5),zeros(1,40)]; 确实是真实的。