I have a waveform where I sliced the flat top so I can do some analysis on the amplitudes of each frequency. I have a dataset of N measurements each with M samples of current (A) over time (microseconds). I expect that there is a frequency on the 100 Hz sideband of the expected frequency. I curve fitted the expected frequency on the waveform and removed it. Then I applied a Hann window on the remaining noise and took the FFT of that.

import numpy as np
complex_fft = np.fft.rfft(waveformdata*np.hanning(len(waveformdata)))
fft_bins = np.fft.rfftfreq(size, d=(periodMicroSeconds/10**6))
unscaled_amplitude = abs(complex_fft)

Then I aggregated the min/max/mean values of the unscaled_amplitudes. Now I want to plot the amplitude of each frequency of the remaining noise. This all worked but I'm not sure if the remaining noises are within the precision of the measurement equipment. So I want to see the true current on each frequency.

I saw somewhere that with a normal waveform I have to scale the amplitude by dividing it by M to show the true amplitude. Then I read somewhere else that with a Hann window I have to scale it again by multiplying by 2. Is this true? Should I scale the amplitude by 2/M*unscaled_amplitude to get the current?