Se fai un diagramma FFT di un segnale semplice, come:
t = 0:0.01:1 ;
N = max(size(t));
x = 1 + sin( 2*pi*t ) ;
y = abs( fft( x ) ) ;
stem( N*t, y )
Sinusoide 1Hz + DC
FFT di cui sopra
Capisco che il numero nel primo cestino è "quanta DC" c'è nel segnale.
y(1) %DC
> 101.0000
Il numero nel secondo cestino dovrebbe essere "quanto 1 ciclo sull'intero segnale" c'è:
y(2) %1 cycle in the N samples
> 50.6665
Ma non è 101! Sono circa 50,5.
C'è un'altra voce alla fine del segnale fft, uguale in grandezza:
y(101)
> 50.2971
Quindi di nuovo 50,5.
La mia domanda è: perché la FFT si rispecchia in questo modo? Perché non è solo un 101 in y(2)
(il che ovviamente significherebbe che tutti i 101 bin del tuo segnale hanno una sinusoide da 1 Hz?)
Sarebbe preciso fare:
mid = round( N/2 ) ;
% Prepend y(1), then add y(2:middle) with the mirror FLIPPED vector
% from y(middle+1:end)
z = [ y(1), y( 2:mid ) + fliplr( y(mid+1:end) ) ];
stem( z )
Capovolgi e aggiungi la seconda metà del vettore FFT
Ho pensato ora, la parte specchiata sul lato destro viene aggiunta correttamente, dandomi il desiderato "tutti i 101 bin dell'FFT contengono una sinusoide da 1Hz"
>> z(2)
ans =
100.5943