FFT from measured data - Scaling y-axis
112 views (last 30 days)
As a data basis, I have measured data the volts were recorded. Matlab will now be used to perform an FFT. I have the following questions:
- What unit do I have on the ordinate axis after the FFT? Also volts?
- How is scaled correctly? By hiding the negative frequencies (Nyquist), I would actually have to double the amplitude, right?
- Do I have to multiply all values of the FFT again with 20 * log10 (FFT) to represent the ordinate in db?
Here the basis Matlab Code:
load('TimeDomain.mat')%loading of the time domain signal
L=2500; %length of the signal
t=(0:L-1)*10^-3;%time domain array
f=linspace(0,Fs/2,length(t));%frequency domain array
Thank you so much for your support!
Star Strider on 28 May 2018
Edited: Star Strider on 28 May 2018
Your code appears to be correct.
I would change two lines:
FFT=abs(fft(Timedomain,N)/L); % Divide By ‘L’ To Scale For Signal Vector Length
plot(f,FFT(1:2500)*2) % Your Second Point Is Correct: Multiply By ‘2’ Since You Are Plotting A One-Sided Fourier Transform
The units are the same as the original (here Volts) unless you square ‘FFT’ or use the equivalent ‘20*log10(FFT)’ transformation, since the units then become power (Watts).
EDIT — Corrected typographical error, clarified explanation.
More Answers (1)
Yuvaraj Venkataswamy on 28 May 2018
Edited: Yuvaraj Venkataswamy on 28 May 2018
1.If you are directly use the voltage output as input, then your FFT amplitude must be in mV.