Originariamente inviato da panta1978
No. Usualmente, una fft ha una sintassi del genere:
codice:
Y = fft(X,N)
In sostanza, eseguo una fft su N nodi alla funzione X. Molto spesso, per velocizzare l'algoritmo, N è una potenza del due o comunque un numero ben divisibile. Per intenderci, N=1024 è ottimale, N=1000 buono, N=1100 così così, N=1097 è male.

Ciò significa che, se usi N nodi, dividi il tuo spettro di frequenze in N/2 parti.
Così, se mettiamo per semplicità, tu hai fatto un campionamento a 50.000 Hz, e poni N=1000, otterrai i valori della fft per i seguenti valori di frequenza:
0 Hz - 50 Hz - 100 Hz - 150 Hz - 200 Hz - 250 Hz - ....... - 25.000 Hz (per il criterio di Shannon se campioni ad una frequenza fs, la banda massima osservabile è fs/2).

Per ogni valore della frequenza ottieni un numero complesso, il cui valore assoluto rappresenta la densità di ampiezza del segnale, e la fase... la fase del segnale.

Per quanto riguarda l'algoritmo utilizzato, la trasformata di Fourier classica moltiplica la funzione f(t) per delle funzioni sin(wt) e cos(wt) con frequenze pari alle frequenze che si vogliono osservare e, calcolandone l'integrale, trova i valori rispettivamente della parte reale e della parte immaginaria della trasformata di Fourier.

L'algoritmo fft (Fast Fourier Transform) è più complesso, e sfrutta delle simmetrie della funzione per arrivare allo stesso risultato della funzione fft con meno calcoli (N*logN contro N^2). In pratica, divide la funzione originaria in tanti "pezzettini", e li calcola separatamente, poi unisce i risultati.

PS: ricordati che la fft ti fornisce la densità di ampiezza A del segnale. Se vuoi passare all'ampiezza a, devi fare il seguente calcolino:

a = sqrt(A)/(N/2)
va bene, penso di aver capito piu' o meno, ora vedo un po' se riesco a combinare qualcosa con matlab