趋势项和趋势项的导数

趋势项和趋势项的导数
https://blog.csdn.net/xiaiming0/article/details/137904569?spm=1001.2014.3001.5501


提示:以下是本篇文章正文内容,下面案例可供参考

一、趋势项特征

在这里插入图片描述

二、趋势项

	"""趋势项"""
    # 创建 EMD 对象
    emd = EMD()

    # 对信号进行经验模态分解
    IMFs = emd(data_yunsuan)
    IMFs_num = 3
    # 绘制原始信号和每个本征模态函数(IMF)
    plt.figure(figsize=(15, 10))
    plt.subplot(len(IMFs) + 1, 1, 1)
    plt.plot(data_yunsuan_index, data_yunsuan, 'r')
    plt.title("Original signal")

    # 绘制emd分解后的结果
    for num, imf in enumerate(IMFs):
        plt.subplot(len(IMFs) + 1, 1, num + 2)
        plt.plot(data_yunsuan_index, imf)
        plt.title("IMF " + str(num + 1))
    plt.show()

    # 绘制趋势项
    qushixiang = np.zeros((data_yunsuan_len))
    for i in np.arange(1, IMFs_num + 1, 1):
        qushixiang = qushixiang + IMFs[-i]
    plt.figure()
    plt.title("原始图像和趋势向")
    plt.plot(data_yunsuan_index, data_yunsuan)
    plt.plot(data_yunsuan_index, qushixiang, 'r')
    plt.show()

data_yuanshi:你所要求趋势的特征,例如:在寿命预测中,可以是有效值。
IMFs_num:值越大越接近原振动信号,值越小越能刻画变化的趋势。

三、趋势项求导

"""拟合曲线求导"""
    """拟合曲线求导"""
    data_start = data_yunsuan_index[0]
    data_end = data_yunsuan_index[-1]
    data_len = len(data_yunsuan)  # 数据的长度
    # 画原始曲线
    t = np.linspace(data_start, data_end, data_len)  # 横轴
    yy = qushixiang  # 纵轴

    plt.figure()
    plt.scatter(t, yy, marker=".")
    plt.title("拟合前:趋势项")
    plt.show()

    # 画插值拟合的曲线图
    f = interp1d(t, yy, kind="cubic")  # 'linear', 'zero', 'slinear', 'quadratic', 'cubic', 4, 5
    xx = np.linspace(t.min(), t.max(), 5000)
    yynew = f(xx)

    # 挨个求导画图
    a = np.empty((data_len - 2))  # 边界不可求导
    tt1 = np.empty((data_len - 2))
    x_weizhi = t[1:-1]
    dx = t[0] - t[1]
    for i_index, i in enumerate(range(data_len - 2)):
        a[i] = derivative(f, x_weizhi[i_index], dx)  # 求导,第二个参数是求导位置,第三个参数是dx

    plt.figure(figsize=(15,8))
    plt.plot(xx, yynew)
    plt.plot(x_weizhi, a * (max(yynew) / max(a)), color="r")
    plt.hlines(0, min(x_weizhi), max(x_weizhi), colors="y", linestyles="dashed")
    for i_index, i in enumerate(a):
        if i_index > 0:
            if a[i_index - 1] * a[i_index] < 0:
                plt.vlines(i_index, min(a * (max(yynew) / max(a))), max(yynew), colors="y", linestyles="dashed", linewidth=0.5)

    plt.title("趋势项和其导数")
    plt.show()

    plt.figure()
    plt.title("趋势项求导")
    plt.hlines(0, min(x_weizhi), max(x_weizhi), colors="y", linestyles="dashed")
    plt.plot(a)
    plt.show()

四、结果

在这里插入图片描述
由于在现实生活中,机器在空载和带载这两种大的状态间变化,有些时候带载时,载荷也是在不断变化。这是一个很大的问题。所以选取一个标准状态(我觉得是空载)下的特征进行跟踪很重要。因为生产的产品在变,转速也在变,载荷也在变,但是空载状态是不变的,再该状态下的特征受工况影响而产生的变化不大

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值