calcolare la lunghezza ( numero di elementi ) del vettore contenente i vostri dati . Ad esempio, se i dati sono memorizzati in un vettore chiamato "d ", a "L = lunghezza ( d); " nella riga di comando di MATLAB senza virgolette . L ora conterrà il numero di elementi in d
2
Calcola la potenza di 2 che è maggiore o uguale a L , digitando . "P = nextpow2 (L); " al comando di MATLAB linea senza virgolette . Se L = 1000 , per esempio , p sarà 10 , perché 2 ^ 10 = 1024
3
Eseguire la FFT digitando "Y = fft ( d , 2 ^ p) . ; " nella riga di comando di MATLAB senza virgolette . Questo comando aggiunge zeri di d per ottenere un vettore di lunghezza 2 ^ p e quindi esegue FFT sulla 2 ^ p - vettore elemento . Gli zeri allegate non influenzano il risultato della FFT , FFT ma corre più veloce con un vettore la cui lunghezza è una potenza di 2
Il vettore risultante Y fornisce i coefficienti di funzioni seno e coseno a frequenze che vanno da - . ( 2 ^ p /2)) a 1 + ( 2 ^ p /2) (assumendo d è stata campionata a 1 campione al secondo , o 1Hz ) . Queste sono le funzioni seno e coseno , che si sommano al segnale originale d . Y è complesso ; le sue parti reali sono i coefficienti delle funzioni seno e le sue parti immaginarie sono i coefficienti delle funzioni coseno
4
Conservare solo le parti uniche di Y digitando "Y = Y . ( 1 : ( ( 2 ^ p +1 ) /2) ), " senza le virgolette nella riga di comando di MATLAB . Questo è necessario perché l'uscita della FFT è simmetrica - cioè, la seconda metà di Y è semplicemente il complesso coniugato del primo tempo . Ora , Y fornisce i coefficienti di funzioni seno e coseno a frequenze da 0 a 1 + ( 2 ^ p /2) ) .
5
Divide Y da L /2 , digitando "Y = Y. /( L /2 ), " nella riga di comando di MATLAB senza virgolette . Questo è necessario perché l'uscita FFT predefinito di MATLAB viene moltiplicata per un fattore di L /2 , quindi sarà maggiore se d è più lungo . Dividendo per L /2 normalizza l'uscita FFT in modo che essa non dipende dalla lunghezza del d .
Trama FFT risulta
6
Se D non è stato campionato a 1Hz ma ad una certa frequenza " f ", le frequenze effettive rappresentate in Y saranno da 0 a f * ( 1 + ( 2 ^ p /2) ) ) . Calcolare un vettore di MATLAB contenente queste frequenze . In primo luogo , definire la frequenza di campionamento reale in una variabile f . Se la vostra frequenza di campionamento effettiva è stata 0.5Hz ( 1 campione ogni 2 secondi ) , digitare "f = 0.5; " nella riga di comando di MATLAB senza virgolette . Avanti , digitare " freq = f * ( 0 : ( 1 + ( 2 ^ p /2) ) )). " Nella riga di comando di MATLAB senza virgolette . Ora freq contiene le frequenze effettive rappresentate in Y.
7
Prendi l'ampiezza della componente di segnale ad ogni frequenza , digitando " Ya = abs ( Y ) " . nella riga di comando di MATLAB senza virgolette .
8
Plot dello spettro di ampiezza del segnale digitando "complotto ( freq , Ya ) " nella riga di comando di MATLAB senza virgolette .
9
ottenere il potere della componente di segnale ad ogni frequenza , digitando " Yp = Y ^ 2" alla linea di comando di MATLAB senza virgolette .
10
Plot lo spettro di potenza del segnale digitando "complotto ( freq , Yp ) " nella riga di comando di MATLAB senza virgolette .
software © www.354353.com