Python环境下基于优化时频分辨率的信号时频分析

发布时间:2024年01月19日

时频分析方法使用时-频域联合分布描述时间序列信号的瞬态特征,并通过瞬时频率估计来表征信号的特征频率随时间变化的趋势,在时间序列信号处理中得到了广泛的应用。STFT 和WT等常用的时频分析方法时频分辨率较低,而且对于多分量时变信号的匹配效果不佳;WVD对噪声的鲁棒性不足且对于多分量时变信号存在交叉干扰项;EMD及其改进方法缺乏数学理论支撑,并存在端点效应和模态混叠等问题。以上时频分析方法存在一些共性问题,例如它们在时频平面的变换系数分布比较离散,瞬时频率曲线幅值能量不够集中,因此时频谱会出现模糊的现象。

因此提出了一种基于优化时频分辨率的信号时频分析方法,提供输入信号的时频表示,其边缘表示单位时间和频率的原始强度,以调整可调参数以强调时间或频率分辨率。

Python的部分代码如下:

import sys
import numpy as np
import numpy.fft as nfft
from figure import spectrogramFigure
def main():
    tMin= -500.0
    tMax= 5800.0
    wMin= 0.75
    wMax= 3.25
    fName = './data/exampleData_pulsePropagation.npz'
    def fetchData(fileLoc):
        data = np.load(fileLoc)
        return data['t'], data['Et']

    def windowFuncGauss(s0):
        return lambda t: np.exp(-t**2/2/s0/s0)/np.sqrt(2.*np.pi)/s0
    t,Et = fetchData(fName)

    for s0 in [10.0,140.0]:
        oName="./FIGS/fig_vanillaFrog_ESM_sigma%4.3lf.png"%(s0)
        res = vanillaFrog(t,Et,windowFuncGauss(s0),tLim=(tMin,tMax,10), wLim=(wMin,wMax,3))
        spectrogramFigure((t,Et),res,oName=oName)
main()

出图如下:

工学博士,担任《Mechanical System and Signal Processing》审稿专家,担任
《《控制与决策》,《系统工程与电子技术》,《电力系统保护与控制》等EI期刊审稿专家。
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。

文章来源:https://blog.csdn.net/weixin_39402231/article/details/135688150
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。