[Algorithm] Perché FFT produce numeri complessi invece di numeri reali?


Answers

La FFT ti offre ampiezza e fase. L'ampiezza è codificata come la grandezza del numero complesso (sqrt (x ^ 2 + y ^ 2)) mentre la fase è codificata come l'angolo (atan2 (y, x)). Per avere un risultato strettamente reale dalla FFT, il segnale in ingresso deve avere una simmetria uniforme (cioè x [n] = conj (x [Nn])).

Se tutto ciò che ti interessa è l'intensità, l'entità del numero complesso è sufficiente per l'analisi.

Question

Tutte le implementazioni FFT che abbiamo incontrato risultano in valori complessi (con parti reali e immaginarie), anche se l'input dell'algoritmo era un insieme discreto di numeri reali (interi).

Non è possibile rappresentare il dominio della frequenza solo in termini di numeri reali?




Se il tuo coefficiente FFT per una data frequenza f è x + iy , puoi guardare x come il coefficiente di un coseno a quella frequenza, mentre y è il coefficiente del seno. Se aggiungi queste due onde per una frequenza particolare, otterrai un'onda sfasata a quella frequenza; la grandezza di questa onda è sqrt(x*x + y*y) , uguale alla grandezza del coefficiente complesso.

La Discrete Cosine Transform (DCT) è un parente della trasformata di Fourier che produce tutti i coefficienti reali. Un DCT bidimensionale viene utilizzato da molti algoritmi di compressione di immagini / video.






Links