I'm sorry if my question might be simple, but I don't have a strong background on signal processing. I have a csv file of a 8 MHz bandwidth, sampled with a resolution bandwidth of 100 KHz. What I want to do is to compute the PSD over the 8 MHz bandwidth, but I'm not sure if I am doing this correctly.

For a "stable" signal, I multiply the received power over the 100 KHz sample, and then average it at the end over 8 MHz. Is that correct? Does this give me a rough estimation of the PSD?

Are there tools like octave or even python programming that can help in this process? I looked on the internet but didn't had luck.

  • $\begingroup$ What do you mean by resolution bandwidth? That term is typically used on equipment like spectrum analyzers to refer to the approximate bandwidth for each frequency bin (for digital FFT-based analyzers) or for the analog bandwidth of the front end receiver (for swept-tune analyzers). Specifically, what is the sample rate of your data? $\endgroup$
    – Jason R
    Commented Sep 22, 2013 at 23:57

1 Answer 1


I don't understand what exactly you are doing, and your Nyquist frequency is only 50KHz if you're sampling at 100KHz (so you won't get 1MHz resolution). Please clarify if you need a better answer.

Regardless, Python has several ways to compute a PSD. One is with matplotlib. For example:

matplotlib.pyplot as pl
# ...load in your data to dataArr...
sampFreq = 100000
Pxx, freqs = pl.psd(dataArr, NFFT=256,Fs=samplFreq,detrend=detrend_mean,window=window_hanning,noverlap=128,sides='onesided',scale_by_freq=True)

and you get a nice plot, along with the PSD data in Pxx and the frequencies in freqs.

Example PSD


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.