2017-07-27 3 views
2

Ich habe einen einfachen und sehr kleinen Matlab-Code geschrieben, der die diskrete Fourier-Transfrom von einem bestimmten Array (oder Vektor) berechnet.Matlab fft Funktion Swapping Indizes

Ich arbeitete es manuell aus und bekam eine Antwort und mein Matlab Code gab auch die gleiche Antwort. Aber fft gibt eine andere Antwort, indem er Indizes auswechselt. Hier sind die mannual Berechnungen, die ich getan habe:

This is the first image

Dies ist das zweite Bild:

This is the second image

Dies ist das dritte Bild:

This is the third image

Aus diesen Berechnungen geht hervor, dass meine Antwortlauten würde Hier

ist der Matlab-Code, die ich verwendet habe:

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) 

Jetzt, da dies ich bin immer Ausgang:

Matlab Output

Es ist sehr überraschend, dass ich Werte werden getauscht. Es tauscht die Indizes 2 und 4 aus.

Antwort

4

Es sieht so aus, als hätten Sie das falsche Vorzeichen für Ihre Gewichte (was bedeutet, dass Sie wahrscheinlich eine inverse FFT statt einer Vorwärts-FFT machen - bedenken Sie das für die Vorwärts-Transformation the weights are exp(-j * theta)).

Wechsel:

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

zu:

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

Dank Mann ..... – bharath