Matlab,fft per l'analisi spettrale

di Anonimizzato22001 il
2 risposte
Salve, sto cercando di capire come funziona il codice seguente ma alcune cose non sono chiare. qualcuno potrebbe spiegarmele gentilmente.
Non capisco perche NFFT lo trova cosi?
Perche divide la fft per L?
Perche moltiplica gli intervalli per Fs/2?
Perche c'è il 2 quando plotta 2*abs()??

script:
Fs = 1000; % Sampling frequency
T = 1/Fs; % Sample time
L = 1000; % Length of signal
t = (0:L-1)*T; % Time vector
% Sum of a 50 Hz sinusoid and a 120 Hz sinusoid
x = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
y = x + 2*randn(size(t)); % Sinusoids plus noise
plot(Fs*t(1:50),y(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('time (milliseconds)')
NFFT = 2^nextpow2(L); % Next power of 2 from length of y
Y = fft(y,NFFT)/L;
f = Fs/2*linspace(0,1,NFFT/2);

% Plot single-sided amplitude spectrum.
plot(f,2*abs(Y(1:NFFT/2)))
title('Single-Sided Amplitude Spectrum of y(t)')
xlabel('Frequency (Hz)')
ylabel('|Y(f)|')

2 Risposte

  • Qualcuno mi può aiutare?
  • Il problema sembra non essere tanto il codice in sè, ma l'algoritmo che implementa.
    Dove hai trovato il codice?
    Non era accompagnato da qualche descrizione?
Devi accedere o registrarti per scrivere nel forum
2 risposte