def spectrum_plot(data, freq, cfreq, toffset, log_scale, zscale, title, clr):
"""Plot a spectrum from the data for a given fft bin size."""
print("spectrum")
tail_str = ''
if log_scale:
# pss = 10.0*numpy.log10(data / numpy.max(data))
pss = 10.0 * numpy.log10(data + 1E-12)
tail_str = ' (dB)'
else:
pss = data
print freq
freq_s = freq / 1.0E6 + cfreq / 1.0E6
print freq_s
zscale_low, zscale_high = zscale
if zscale_low == 0 and zscale_high == 0:
if log_scale:
zscale_low = numpy.median(
numpy.min(pss[numpy.where(pss.real != -numpy.Inf)])) - 3.0
zscale_high = numpy.median(numpy.max(pss)) + 3.0
else:
zscale_low = numpy.median(numpy.min(pss))
zscale_high = numpy.median(numpy.max(pss))
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
ax.plot(freq_s, pss, clr)
print freq_s[0], freq_s[-1], zscale_low, zscale_high
ax.axis([freq_s[0], freq_s[-1], zscale_low, zscale_high])
ax.grid(True)
ax.set_xlabel('frequency (MHz)')
ax.set_ylabel('power spectral density' + tail_str, fontsize=12)
ax.set_title(title)
return fig
评论列表
文章目录