# Welch Method FFT Python - Scaling factor?

I've been implementing a Welch method FFT and I am trying to work out the correct scaling factor that should be applied to the output of the function so the PSD is accurate because at the moment it's too low.

I am using scipy, signal.welch.

I know what the Power per resolution from a measurement of my signal and ive also calculated manually. I also know my manual calculation is correct because a straight forward FFT produces power around what I calculate but it fluctuates wildly across frequency (+ - 4 dB along what visually appears to be the average in the signal bandwidth).

So I needed a Welch method for a better spectral estimation. However this Welch method output it needs to be shifted vertically in dB. Meaning there must be a scaling factor applied.

Would anyone be able to say what it should be, perhaps the scaling factor varies with fftsize, percent of overlap, length of each segment etc?

• I'm not sure about this either. Fromf, Pxx_spec = welch(sig, fs, 'flattop', nperseg=N, scaling='spectrum'), I use 20*np.log10(np.sqrt(2)*np.sqrt(Pxx_spec) to get dBFS levels for tones, if that's at all helpful. It's unaffected by nperseg and window. Mar 28 at 1:24