使用Matlab验证结论时得出了错误的结论,以下是题目:
构造一个复数序列:
(a)画出该复数序列的傅里叶变换的实部和虚部,看看是否具有对称性。
(b)画出该序列的实部和虚部的傅里叶变换的实部和虚部,看看是否具有对称性。
(c)比较(a)和(b)的结果,验证二者之间的关系。
以下是我使用的Matlab代码:
s=[-3+4i,3+1i,5+4i,3i,1+2i,-2+1i,-1-1i,-1i,-2i,-3+1i,9+5i];
N=11; %周期为11
fft_s=fft(s,N); %进行傅里叶变换
fft_re=real(fft_s); %取出傅里叶变换的实部
fft_im=imag(fft_s); %取出傅里叶变换的虚部
figure;
subplot(2,1,1);
stem(fft_re);
title('傅里叶变换的实部');
subplot(2,1,2);
stem(fft_im);
title('傅里叶变换的虚部');
re=real(s); %取出复数序列的实部
im=imag(s); %取出复数序列的虚部
re_fft=fft(re,N); %对实部做傅里叶变换
im_fft=fft(im,N); %对虚部做傅里叶变换
re_re_fft=real(re_fft); %取出实部傅里叶变换的实部
im_re_fft=imag(re_fft); %取出实部傅里叶变换的虚部
re_im_fft=real(im_fft); %取出虚部傅里叶变换的实部
im_im_fft=imag(im_fft); %取出虚部傅里叶变换的虚部
figure;
subplot(2,1,1);
stem(re_re_fft);
title('实部的傅里叶变换的实部');
subplot(2,1,2);
stem(im_re_fft);
title('实部的傅里叶变换的虚部');
figure;
subplot(2,1,1);
stem(re_im_fft);
title('虚部的傅里叶变换的实部');
subplot(2,1,2);
stem(im_im_fft);
title('虚部的傅里叶变换的虚部');
正确的结论应该是:
1.复数序列傅里叶变换的实部 = 序列实部傅里叶变换的实部 + 序列虚部傅里叶变换的实部
2.复数序列傅里叶变换的虚部 = 序列虚部傅里叶变换的虚部 + 序列实部傅里叶变换的虚部
而我的代码得出的结论却是:
1.复数序列傅里叶变换的实部 = 序列实部傅里叶变换的实部 + 序列虚部傅里叶变换的虚部
2.复数序列傅里叶变换的虚部 = 序列实部傅里叶变换的虚部 + 序列虚部傅里叶变换的实部
检查了好多遍感觉代码逻辑没有问题,实在找不到原因了。