2017-07-27 3 views
2

私は、与えられた配列(またはベクトル)の離散フーリエ変換を計算する簡単で非常に小さなMatlabコードを書いています。Matlab fft関数交換インデックス

私は手動でそれを働いて、答えと私のMatlabコードも同じ答えを与えました。しかし、fftは、インデックスとスワップすることによってこれとは異なる答えを出しています。ここで私がやったmannual計算です:

This is the first image

これが第二の画像です:

This is the second image

これが第三の画像です:

This is the third image

これらの計算から、私の答えはここ

は、私が使用した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