Matlab fft函数交换索引

时间:2017-07-27 05:09:04

标签: matlab math signal-processing fft

我编写了一个简单且非常小的Matlab代码,用于计算给定数组(或向量)的离散傅里叶变换。

我手工制作并得到答案,我的Matlab代码也给出了相同的答案。但fft通过交换索引给出了与此不同的答案。以下是我所做的手工计算:

This is the first image

这是第二张图片:

This is the second image

这是第三张图片:

This is the third image

从这些计算中可以清楚地看出我的回答是{12, -3-3j, -2, -3+3j}

这是我用过的Matlab代码:

clc;
clear all;
close all;
inp=[1,2,3,4];
j=sqrt(-1);
op=zeros(1,length(inp));
for k=1:length(inp)
    sigma=0;
    for n=1:length(inp)
        sigma=sigma+inp(n)*exp((j*2*pi*(k-1)*(n-1))/length(inp));
    end
    op(k)=sigma;
end
% Checking with fft
fft(inp)

现在我得到输出:

Matlab Output

我正在意外地交换价值。它正在交换指数2和4。

1 个答案:

答案 0 :(得分:4)

看起来您的权重符号错误(这意味着您可能正在进行逆FFT而不是正向FFT - 请记住正向变换the weights are exp(-j * theta))。

变化:

    sigma=sigma+inp(n)*exp((j*2*pi*(k-1)*(n-1))/length(inp));

为:

    sigma=sigma+inp(n)*exp(-(j*2*pi*(k-1)*(n-1))/length(inp));