对序列信号进行eemd分解,计算样本熵,根据样本熵的大小进行信号重构,重构为低频中频高频信号

对序列信号进行eemd分解,计算样本熵,根据样本熵的大小进行信号重构,重构为低频中频高频信号。
程序步骤。
有详细的使用说明和参数选择建议。
1.输入时间序列,
2.对时间序列进行eemd分解
2.分解后得到IMF序列,分解的结果存放在eemd_imf变量中,绘制每一个分量及其频谱。
3.对每个IMF进行样本熵的计算
4.根据样本熵的大小对信号进行重构
5.重构为低、中、高三个时间序列。
绘制低中高重构信号及其频谱。
1.输入时间序列,
2.对时间序列进行eemd分解
2.分解后得到IMF序列,分解的结果存放在eemd_imf变量中,绘制每一个分量及其频谱。
3.对每个IMF进行样本熵的计算
4.根据样本熵的大小对信号进行重构
5.重构为低、中、高三个时间序列。
绘制低中高重构信号及其频谱。

对序列信号进行eemd分解,计算样本熵,根据样本熵的大小进行信号重构,重构为低频中频高频信号,在时间序列分析中被广泛应用。本文将介绍如何对序列信号进行eemd分解,计算样本熵以及如何对信号进行重构。同时,我们也会给出详细的步骤说明和参数选择建议。

  1. 输入时间序列

我们首先需要准备要分析的时间序列数据,该数据可以是从传感器、日志记录或其他数据源中获取的。我们假设已经获得了一个完整的时间序列数据作为输入数据。

  1. 对时间序列进行eemd分解

为了进行eemd分解,我们需要使用Python等数据分析工具。Python中有许多包可以用来进行eemd分解,包括PyEMD和tftb等。在本文中,我们将使用PyEMD进行eemd分解。

在PyEMD中,我们需要定义一个EMD类实例,然后调用该实例的eemd方法进行分解。具体代码如下:

from PyEMD import EMD

emd = EMD()
eemd_imf = emd.eemd(data)

其中,data是我们输入的时间序列数据,eemd_imf是分解后得到的IMF序列。

  1. 分解后得到IMF序列,分解的结果存放在eemd_imf变量中,绘制每一个分量及其频谱

通过对时间序列进行eemd分解,我们得到了一个包含多个IMF序列的列表eemd_imf。我们可以使用Matplotlib包绘制每个IMF及其频谱。

import matplotlib.pyplot as plt
from PyEMD import EMD

emd = EMD()
eemd_imf = emd.eemd(data)
for i, imf in enumerate(eemd_imf):
    plt.subplot(len(eemd_imf), 2, i*2+1)
    plt.plot(imf)
    plt.title('IMF {}'.format(i+1))
    plt.subplot(len(eemd_imf), 2, i*2+2)
    plt.magnitude_spectrum(imf, Fs=len(imf))

其中,data是我们输入的时间序列数据,eemd_imf是分解后得到的IMF序列。

  1. 对每个IMF进行样本熵的计算

样本熵是一种用于描述时间序列随机性的统计量。对于每个IMF,我们都需要计算其样本熵。样本熵的计算可以使用Entropy.py包进行计算。具体代码如下:

from entropy import sample_entropy

sample_entropies = []
for imf in eemd_imf:
    sample_entropy = sample_entropy(imf, 2, 0.2*np.std(imf))
    sample_entropies.append(sample_entropy)

其中,eemd_imf是分解后得到的IMF序列,sample_entropies是每个IMF的样本熵值。

  1. 根据样本熵的大小对信号进行重构

根据每个IMF的样本熵大小,我们可以将其按照高、中、低三个频段进行分类,并分别对其进行重构。具体代码如下:

low_imfs = []
mid_imfs = []
high_imfs = []
for i, imf in enumerate(eemd_imf):
    if sample_entropies[i] < np.median(sample_entropies):
        low_imfs.append(imf)
    elif sample_entropies[i] > np.median(sample_entropies):
        high_imfs.append(imf)
    else:
        mid_imfs.append(imf)

low = np.sum(low_imfs, axis=0)
mid = np.sum(mid_imfs, axis=0)
high = np.sum(high_imfs, axis=0)

其中,eemd_imf是分解后得到的IMF序列,sample_entropies是每个IMF的样本熵值。low_imfs、mid_imfs和high_imfs分别是低频、中频和高频的IMF序列。low、mid和high分别是低频、中频和高频的重构信号。

  1. 绘制低中高重构信号及其频谱

最后,我们可以使用Matplotlib包绘制低、中、高三个频段的重构信号及其频谱。具体代码如下:

plt.subplot(3, 2, 1)
plt.plot(low)
plt.title('Low Frequency')
plt.subplot(3, 2, 2)
plt.magnitude_spectrum(low, Fs=len(low))

plt.subplot(3, 2, 3)
plt.plot(mid)
plt.title('Mid Frequency')
plt.subplot(3, 2, 4)
plt.magnitude_spectrum(mid, Fs=len(mid))

plt.subplot(3, 2, 5)
plt.plot(high)
plt.title('High Frequency')
plt.subplot(3, 2, 6)
plt.magnitude_spectrum(high, Fs=len(high))

相关代码,程序地址:http://lanzouw.top/658847190963.html
 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值