【问题标题】:Matlab fft function swapping indicesMatlab fft函数交换索引
【发布时间】:2017-07-27 05:09:03
【问题描述】:

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

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

这是第二张图片:

这是第三张图片:

从这些计算中可以清楚地看出我的答案是{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)

现在我得到这样的输出:

我正在交换值,这是非常出乎意料的。它正在交换索引 2 和 4。

【问题讨论】:

    标签: matlab math signal-processing fft


    【解决方案1】:

    您的权重符号似乎有误(这意味着您可能正在执行逆 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));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-09
      • 1970-01-01
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      • 2012-05-12
      • 1970-01-01
      相关资源
      最近更新 更多