There are many different definitions for a power spectral density function, and correspondingly different possibilities for the scaling factor. Section 13.4 of Numerical recipes in C lists several common definitions such as:
- defined for discrete positive, zero, and negative frequencies, and its sum over these is the function mean squared amplitude
- defined for zero and discrete positive frequencies only, and its sum over these is the function mean square amplitude
- defined in the Nyquist interval from -fc to fc and its integral over this range is the function mean squared amplitude
- defined from 0 to fc, and its integral over this range is the function mean square amplitude
The right definition and scaling factor would thus be specific to your application. As an illustration of the impact these different definitions can have on the scaling factor, I've listed below some specific implementations which use different definitions.
Since I mentioned the Numerical recipes book, we can start be looking at the definition chosen for the purpose of showing a sample implementation of the PSD (not suggesting that it is the correct definition). In this case the second definition listed above (ie. "defined for zero and discrete positive frequencies only, and its sum over these is the function mean square amplitude") has been used, which leads to the normalization:
len = length(F);
N = 0.5*len^2;
PSD = (1/N) * F(1:len/2) * conj(F(1:len/2));
Octave's pwelch on the other hand uses a different definition of the power spectral density (namely the last one listed above), which leads to a different normalization approximated by:
len = length(F);
N = 0.5*len*Fs; % where Fs is the sampling rate
PSD = (1/N) * F(1:len/2) * conj(F(1:len/2));