python绘制时频图

最近一直在做轴承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)这两个标红的参数进行调整。

python绘制时频图_第1张图片

python绘制时频图_第2张图片

代码见: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()

python绘制时频图_第3张图片

你可能感兴趣的:(python)