故障振动信号EEMD分解问题

您好,我是用EEMD对实际振动信号进行分解,分解结果是这样的:

img

不太清楚如果看分解效果咋样,就用您的一篇博客中用fft画频谱图的方法,作出下图:

img

感觉效果很差,请问我该如果改进呀?

(已知的采样频率不清楚是否正确 会影响分解结果吗?)

这是我的代码,如果可以的话,麻烦您帮忙看一下~非常感谢


def signal_eemd(S):
    # 这里是根据我的数据计算的时间
    Ts = 1 / 12000   #采样时间间隔  采样频率12kHz
    t = np.linspace(0, 2047 * Ts, num=2048)   #创建等差数列 开始时间--结束时间 点数    2048个点 2047间隔
     #     t = np.array(t)  #
    eemd = EEMD()
    eemd.trials = 1000   # 500  添加噪声次数
    eemd.noise_seed(12345)  
    eemd.noise_width = 0.1    #高斯噪声标准差  0.01~0.4
    eIMFs = eemd.eemd(S, t, -1)     #EEMD分解
    nIMFs = eIMFs.shape[0]    #IMF分量的个数


 #----频谱图
def fft_img(a, b):
    Fs = 12000
    N = 2048
#     Ts = 1.0/Fs
#     t = np.arange(2048)
    k = np.arange(N)
    T = N/Fs   
    frq = k/T
    frq1 = frq[range(int(N/2))]
    plt.rcParams['figure.figsize']=(12.8, 7.2)
    plt.subplot(8, 1, 1)
    data_f = abs(np.fft.fft(a)) / N
    data_f1 = data_f[range(int(N/2))]
    plt.plot(frq1, data_f1, 'red')
    plt.title('outer')
    for i in range(0, 7):      #前7个IMF
        plt.subplot(8, 1, i+2)
        data_f2 = abs(np.fft.fft(b[i])) / N
        data_f3 = data_f2[range(int(N / 2))]
        plt.plot(frq1, data_f3, 'red')
        plt.xlabel('pinlv(hz)')
        plt.ylabel('IMF{}'.format(i + 1))
#         plt.locator_params(axis='y', nbins=3)   #刻度
        plt.tight_layout()
        plt.show()

不知道你说的这个是谁的代码,为什么不直接找文章作者提问呢。