dubbio sul FFT

Ho recuperato del sorgente "C" per implementare FFT e IFFT. Sembrerebbe essere tutto OK, ma mi sorge un dubbio: mi aspettavo che i valori dei campioni dovessero essere compresi tra -1 e 1. La parte reale della trasformata infatti da dei valori tra -1 e 1, mentre la parte immaginaria ha dei valori maggiori. In particolare se faccio un FFT con una sinusoide perfettamente multiplo della finestra di FFT, il valore immaginario corrispondente alla fondamentale della sinusoide ha il valore di 256 !!!! Potrei ignorare la cosa vosto che sembra funzionare tutto, ma la cosa non mi lascia del tutto soddisfatto (dove =E8 la fregatura?). Purtroppo non so dirvi quale algoritmo usa la FFT, =E8 comunque quello semplice che si trova d'appertutto. Per intenderci vi allego un pezzettino di sorgente:

BlockEnd =3D 1; for (BlockSize =3D 2; BlockSize

Reply to
luca.moreschi
Loading thread data ...

Il 9 Jun 2005 04:30:21 -0700, snipped-for-privacy@siemens.com ha scritto:

[cut]

Il sorgente non l'ho controllato per mancanza di fegato...;)

L'ultima volta che ho pacioccato con gli algoritmi di FFT era all'università, e mi ricordo che avevo avuto non pochi grattacapi a mettere tutto in ordine, tra simmetrie e traslazioni varie...

Credo che la tua situazione sia analoga e che tu debba sbatterti un pochino per "debuggare" il tuo codice.

In particolare, la FFT di una sinusoide di ampiezza A dovrebbe darti, dopo le varie normalizzazioni, un campione in f0 di ampiezza A per la parte reale e per parte immaginaria qualcosa che abbia a che fare con la fase...Credo che dipenda da come definisci la tua FFT, coi seni o coi coseni. Magari la parte immaginaria non è normalizzata? Che succede con una sinusoide "sfasata"?

M
Reply to
Michele Ancis

oh bella!! ho provato a sfasare la sinusoide e ho scoperto che anche la parte reale cresce piu di 1. Dopo varie prove sono arrivato alla conclusione che questo algoritmo prende in ingresso un segnale normalizzato (1:-1) fa la FFT e genera in uscita la parte reale e immaginaria con valori tra 255 e -255!! Stesso discorso ma all'incontrario se faccio la IFFT. Non capisco ma mi adeguo, anche perche tutto funziona perfettamente!!! grazie, e ciao a tutti

Reply to
luca.moreschi

Se avevi 256 campioni allora semplicemente non e' normalizzata. Se ne avevi un altro numero... uh... non saprei, probabilmente c'e' una qualche costante in giro che ti frega...

Ciao Scola

Reply to
nicola scolari

Brutta roba l'ignoranza! hai ragione non =E8 semplicemente normalizzata (che vergogna!!!) Grazie di tutto!!! Luca

Reply to
luca.moreschi

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.