Consigli su FFT con Matlab
Salve a tutti gli utenti del forum,
come scritto nel titolo ho dei problemi a generare la FFT con Matlab. Partiamo dall'inizio: ho prelevato un segnale da un oscilloscopio Tektronix e trasformato in una matrice 2X20000 di dati. Plottando con matlab tale segnale nel tempo, non si riscontrano particolari differenze con lo screenshot dell'oscilloscopio

"da Matlab"

"screenshot
Il problema si presenta quando vado a fare la FFT; il codice è il seguente:
con il seguente risultato:

dove può essere l'errore??
ho provato a cambiare la forma del segnale nella matrice ma non ottengo miglioramenti con:
y = sin(45.5*10^6.*x); %segnale sinusoidale in 40us
Grazie a chi mi risponderà!
come scritto nel titolo ho dei problemi a generare la FFT con Matlab. Partiamo dall'inizio: ho prelevato un segnale da un oscilloscopio Tektronix e trasformato in una matrice 2X20000 di dati. Plottando con matlab tale segnale nel tempo, non si riscontrano particolari differenze con lo screenshot dell'oscilloscopio

"da Matlab"

"screenshot
Il problema si presenta quando vado a fare la FFT; il codice è il seguente:
- Codice: Seleziona tutto
signal = load ('D:\grafici misure\appr_cap.dat');
x=signal (:,1);
y=signal (:,2);
plot (x,y);
grid on;
title('Andamento di Vm nel tempo');
xlim([min(x) max(x)]);
xlabel('Time (s)');
ylabel('Vm (V)');
%FFT
fs = 5*10^9;
ts=1/fs;
N=length(signal);
t= (0:N-1)*ts;
figure();
NFFT = 2^nextpow2(N); %L’algoritmo è più efficiente se N è uguale ad una potenza di 2
Y = fft (signal,NFFT)/N;
f = fs/2*linspace(0,1,NFFT/2+1);
semilogx(f,20*log(abs(Y(1:NFFT/2+1))),'k') %è lo stesso di 'plot' solo con asse x log
% plot(f(1:NFFT/2+1),2*abs(Y(1:NFFT/2+1)));
%figure;
title('Spettro V_R_m');
%legend('|Y(f)|');
xlabel('Frequenza (Hz)')
ylabel('|Y(f)| (dB)')
grid on;
con il seguente risultato:

dove può essere l'errore??
ho provato a cambiare la forma del segnale nella matrice ma non ottengo miglioramenti con:
y = sin(45.5*10^6.*x); %segnale sinusoidale in 40us
Grazie a chi mi risponderà!

Grazie mille!!