Cercasi esperto Matlab e fft
Allora il problema è che non capisco bene tutti i passaggi per ottenere un analisi spettrale decente di un segnale.
Allora il mio problema è che ho un segnale e voglio scoprirne le frequenze fondametale, il segnale è campionato con una certa frequenza (1000Hz) e in un certo periodo.
Il problema non è tanto fare la fft in matlab ma graficare correttamente i risultati.
Il problema è che per graficarla ho bisogno di sapere cosa mettere sull'asse delle ascisse, si ci vanno le frequenze ma quali?
Allora aiutato dalle mille guide su internet ho capito che la frequenza teorica massima campionata sarà pari alla frequenza di campionamento.Quindi faccio una scala di intervalli che parte da 0 e arriva alla fc (frequenza di campionamento).
Ma cosi facendo il grafico è difficilmente interpretabile in quanto la funzione appare simmetrica rispetto alla verticale passante per fc/2.
Allora sulla guida di matlab ho trovato molti passaggi che risolvono questo inconveniente ma sinceramente non li capisco.
C'è qualcuno che me li spiega?
L'unica cosa che ho capito è che la NFFT serve per cercare la massima potenza in base 2 che posso ottenere dai dati che possiedo, questo per massimizzare l'efficienza della FFT che lavora appunto in potenza di 2.GIUSTO????
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)|')
Questo è cioè che c'è sulla guida.
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()??
Grazie a tutti
Allora il mio problema è che ho un segnale e voglio scoprirne le frequenze fondametale, il segnale è campionato con una certa frequenza (1000Hz) e in un certo periodo.
Il problema non è tanto fare la fft in matlab ma graficare correttamente i risultati.
Il problema è che per graficarla ho bisogno di sapere cosa mettere sull'asse delle ascisse, si ci vanno le frequenze ma quali?
Allora aiutato dalle mille guide su internet ho capito che la frequenza teorica massima campionata sarà pari alla frequenza di campionamento.Quindi faccio una scala di intervalli che parte da 0 e arriva alla fc (frequenza di campionamento).
Ma cosi facendo il grafico è difficilmente interpretabile in quanto la funzione appare simmetrica rispetto alla verticale passante per fc/2.
Allora sulla guida di matlab ho trovato molti passaggi che risolvono questo inconveniente ma sinceramente non li capisco.
C'è qualcuno che me li spiega?
L'unica cosa che ho capito è che la NFFT serve per cercare la massima potenza in base 2 che posso ottenere dai dati che possiedo, questo per massimizzare l'efficienza della FFT che lavora appunto in potenza di 2.GIUSTO????
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)|')
Questo è cioè che c'è sulla guida.
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()??
Grazie a tutti
Risposte
Ciao,
ti dispiacerebbe editare il titolo e scriverlo in minuscolo?
3.4 Soprattutto sono da evitare titoli e testo in grassetto o in maiuscolo.
Grazie per la comprensione.
ti dispiacerebbe editare il titolo e scriverlo in minuscolo?
3.4 Soprattutto sono da evitare titoli e testo in grassetto o in maiuscolo.
Grazie per la comprensione.
"valentino86":sì
L'unica cosa che ho capito è che la NFFT serve per cercare la massima potenza in base 2 che posso ottenere dai dati che possiedo, questo per massimizzare l'efficienza della FFT che lavora appunto in potenza di 2.GIUSTO????
"valentino86":scrivi nextpow2(5) in Matlab e te ne convincerai; vedi anche l'help
Non capisco perche NFFT lo trova cosi?
"valentino86":L'effetto è quello di una normalizzazione dell'ampiezza delle componenti spettrali, ma non ho capito bene il perché faccia questo
Perche divide la fft per L?
"valentino86":Perché se non lo facesse sull'asse delle frequenze ci sarebbe la frequenza digitale che in questo caso andrebbe da 0 a $1$, cosi invece ottieni uno span di frequenze che va da 0 a $Fs/2$
Perche moltiplica gli intervalli per Fs/2?
"valentino86":cambia la scala... L'intervallo di variazione delle ampiezze così è tra 0 e 1
Perche c'è il 2 quando plotta 2*abs()??
che esame stai preparando?Elaborazione numerica dei segnali?
la generica frequenza digitale $nu$ a partire dalla corrispondente frequenza analogica $f$ è: $nu=f/(Fs)$. Cioè questa è la relazione che lega frequenza analogica con freq digitale. Siccome la massima frequenza campionabile è $(Fs)/2$ hai che in digitale ciò che vedi va da $0$ a $1/2$
Sto preparando meccanica delle vibrazioni (secondo il prof fft, matlab e tutte queste cose le dovevo studiare all'asilo).
Sto cercando di trovare le frequenza proprie da un'anlisi sperimentale fatta in laboratorio con un accelerometro su una sbarra d'acciaio perturbata con un impulso.
Che differenza c'è tra frequanza digitale e analogica???Scusa ma questo non è proprio il mio campo
Sto cercando di trovare le frequenza proprie da un'anlisi sperimentale fatta in laboratorio con un accelerometro su una sbarra d'acciaio perturbata con un impulso.
Che differenza c'è tra frequanza digitale e analogica???Scusa ma questo non è proprio il mio campo
"valentino86":molto brevemente la frequenza digitale di un segnale tempo discreto rappresenta "il numero di cicli per campione"; cioè tra un campione e il successivo quanti periodi, quante oscillazioni complete ci sono del segnale sinusoidale? Chiaramente meno di una ecco perché la frequenza digitale viene minore di 1. In particolare viene minore di 1/2 e maggiore di 0: $0
Che differenza c'è tra frequanza digitale e analogica??