Tengo un 10 segundos de datos muestreados. La tasa de muestreo es 1kHz. Subí el archivo de texto que es un tiempo de dos columnas frente a los datos de voltaje; se puede descargar aquí .
Realicé FFT en MATLAB, Python y LTspice. MATLAB y Python están de acuerdo cuando grabo pero obtengo un resultado diferente en LTspice.
Aquí debajo está el código que uso y el gráfico con MATLAB:
ts = 0.001; %sampling interval (sec)
Fs = 1./ts; %sampling frequency (Hz)
L = length(y); %number of samples
complex = fft(y)/L; % complex signals
f = 0 : Fs/L : Fs/2; % frequency bins
amplitude = 2*abs(complex(1:L/2+1)); % amplitudes
pow = (amplitude).^2/2*(L/Fs); % power
semilogx(f,20*log10(amplitude),'-b');
grid on;
xlabel('Frequency [Hz]')
ylabel('dB')
AcontinuaciónsemuestraelcódigoqueusoylatramaconPython:
plt.figure()y=v_inT=1/sampling_rateN=len(y)yf=scipy.fftpack.fft(y)xf=np.linspace(0.0,1.0/(2.0*T),N/2)amplitude=2.0/N*np.abs(yf[:N//2])pow=(N/sampling_rate)*amplitude*amplitude/2plt.semilogx(xf,20*np.log10(amplitude),'b')plt.grid()plt.xlabel('Frequency[Hz]')plt.ylabel('dB')
Yfinalmente,transmitílaseñaldelarchivodetextoalgeneradordeseñalesenLTspice(usandolaopcióndearchivoPWL)yrealicéFFTyobtengoelsiguientegráfico:
MATLAB y Python muestran el punto máximo de db como -46.2dB, pero Ltspice muestra este punto como -49.3dB. Esta no es una diferencia muy pequeña.
¿Cuál podría ser la razón de esta diferencia? ¿Estoy haciendo algo mal en MATLAB y Python al evaluar FFT o LTspice está mal?