python绘制时频图

在轴承RUL研究中,作者面临信号处理挑战,需要使用Python绘制时频图。尝试了plt.imshow()和plt.pcolor()函数,但分别存在功能限制和效率问题。最终选择了plt.pcolormesh()函数,该函数能更好地适应时频图的绘制需求。为保持图像一致性,需调整X、Y轴及colorbar的大小,通过设置vmin和vmax参数来控制colorbar范围。完整代码可在优快云下载链接中获取。

最近一直在做轴承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.youkuaiyun.com/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()

评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值