最近一直在做轴承RUL。在进行xinh信号处理上面遇见了很多的问题,想要用python进行信号时频图的绘制。但是在选择绘制图的函数上也是煞费苦心。
首先来说plt.imshow()函数,虽然他的功能强大,但是他并没有相对应的可以将(时间,频率,CWT处理后的信号)进行联合绘制的参数设定。在使用plt.pcolor()这个函数时,它运行速度极慢。后来选择使用了plt.pcolormesh()函数进行时频图的绘制。
为了保证所有的图像时频图一致性,需要设置X,Y轴,以及colorbar的大小。在设置colorbar的时候可以直接使用plt.pcolormesh()函数。plt.pcolormesh(t, frequencies, abs(cwtmatr), cmap=cm,vmin=0, vmax=3)这两个标红的参数进行调整。
代码见:https://download.csdn.net/download/x_uhen/10614778
简单的绘制时间,频率和数据之间的图代码如下:
# -*- coding: utf-8 -*- import numpy as np import pylab as pl sampling_rate = 8000 fft_size = 512 t = np.arange(0, 1.0, 1.0/sampling_rate) x = np.sin(2*np.pi*156.25*t) + 2*np.sin(2*np.pi*234.375*t) xs = x[:fft_size] xf = np.fft.rfft(xs)/fft_size freqs = np.linspace(0, sampling_rate/2, fft_size/2+1) xfp = 20*np.log10(np.clip(np.abs(xf), 1e-20, 1e100)) pl.figure(figsize=(8,4)) pl.subplot(211) pl.plot(t[:fft_size], xs) pl.xlabel(u"时间(秒)") pl.title(u"156.25Hz和234.375Hz的波形和频谱") pl.subplot(212) pl.plot(freqs, xfp) pl.xlabel(u"频率(Hz)") pl.subplots_adjust(hspace=0.4) pl.show()