Search code examples
pythonmatplotlibsignal-processing

Prevent matplotlib Function psd() from plotting - or faster alternative


I'm using the matplotlib function psd to generate the power spectral density of a bunch of radio signals I'm receiving. All I want are the returned values but the function plots the whole spectrum not matter what. Is there a way to prevent it from plotting? Is there another function that could do this without the plot? I'm trying to run this as rapidly as possible so anything to speed it up (aka preventing the plot entirely) would be very useful.

The code is pretty straightforward but I'm not sure how to suppress this plotting and ideally prevent it from doing it entirely because I want this code to run as fast as possible:

from pylab import *
power, psd_frequencies = psd(radio_samples, NFFT=256, Fs=samples_rate, Fc=center_frequency)

Alternatives to running psd() that would be faster are very welcome too.


Solution

  • To reproduce exactly what matplotlib plots in the psd plot, you may use its own method:

    from matplotlib.mlab import psd
    power, psd_frequencies = psd(radio_samples, NFFT=256, Fs=samples_rate)
    psd_frequencies += center_frequency
    

    This gives you the data, but without the plot.