2017-07-27 75 views
2

我寫了一個簡單和非常小的Matlab代碼,用於計算給定數組(或矢量)的離散傅里葉變換。Matlab fft函數交換索引

我工作過,並得到了答案,我的Matlab代碼也給出了相同的答案。但fft通過交換索引給出了與此不同的答案。以下是我已經做了mannual算了一筆賬:

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.

回答

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)); 
+0

感謝的人..... – bharath