时间序列信号处理(三)——局部均值分解LMD的python实现
生活随笔
收集整理的這篇文章主要介紹了
时间序列信号处理(三)——局部均值分解LMD的python实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、介紹
局部均值分解(LMD)作為近年來出現的一種新的自適應時頻分析方法,能夠依據信號的自身特點將復雜的多分量調幅調頻信號分解為有限個的單分量調幅調頻信號之和,進而求取瞬時頻率和瞬時幅值并進行組合,從而得到原始信號的完整時頻特征。
2、LMD的實現步驟:
?3.對比經驗模態分解EMD優缺點:
優點:
?缺點:
?4.python實現
import numpy as np import matplotlib.pyplot as plt from PyLMD import LMDdata1 = np.loadtxt('E:/12k1/0HP/outer18.txt') data = data1[2048*2:2048*3] print(data) index = list(range(len(data))) N = len(data) print(N)Fs = 12000 Ts = 1.0/Fs t = np.arange(2048) k = np.arange(N) T = N/Fs frq = k/T frq1 = frq[range(int(N/2))]lmd = LMD() PFs, res = lmd.lmd(data) nPFs = PFs.shape[0] print(nPFs)plt.figure(figsize=(10, 8)) for i in range(0, 6):plt.subplot(8, 1, 1)plt.plot(data, 'blue')plt.title('outer')plt.subplot(8, 1, i + 2)plt.title('PF%d' % i)plt.plot(PFs[i - 1])# plt.subplot(7, 1, 6) # plt.title('residue') # plt.plot(res) # plt.subplots_adjust(hspace=0.5) plt.tight_layout() plt.show()plt.figure(figsize=(10, 8)) for i in range(0, 6):plt.subplot(7, 1, 1)data_f = abs(np.fft.fft(data)) / Ndata_f1 = data_f[range(int(N/2))]plt.title('outer')plt.plot(frq1, data_f1, 'red')plt.subplot(7, 1, i + 2)data_f2 = abs(np.fft.fft(PFs[i])) / Ndata_f3 = data_f2[range(int(N / 2))]plt.title('PF%d' % i)plt.plot(frq1, data_f3, 'red') # plt.subplot(6, 1, 5) # plt.title('residue') # res1 = abs(np.fft.fft(res)) / N # res2 = res1[range(int(N / 2))] # plt.plot(frq1, res2) # plt.subplots_adjust(hspace=0.5) plt.tight_layout() plt.show()?
?經過上述學習發現,均值模態分解雖然優于經驗模態分解,但其存在問題也很難解決,個人覺得經驗模態分解實用性更高,特別是其改進后的EEMD。
最后希望大家多多支持,有用的話點贊關注哦!
總結
以上是生活随笔為你收集整理的时间序列信号处理(三)——局部均值分解LMD的python实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试的基础知识
- 下一篇: 博奥智源公司,图书馆管理软件开发功能详解