日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

时间序列信号处理(三)——局部均值分解LMD的python实现

發布時間:2024/3/24 python 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 时间序列信号处理(三)——局部均值分解LMD的python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、介紹

局部均值分解(LMD)作為近年來出現的一種新的自適應時頻分析方法,能夠依據信號的自身特點將復雜的多分量調幅調頻信號分解為有限個的單分量調幅調頻信號之和,進而求取瞬時頻率和瞬時幅值并進行組合,從而得到原始信號的完整時頻特征。

2、LMD的實現步驟:

  • 首先求出局部均值函數:設信號為x(t),找出其每一個局部極值點,求出所有的兩個相鄰局部極值點的均值,記為;將所有的在對應極值點時刻進行直線延申,采用滑動平均法對延伸直線進行平滑處理,得到局部均值函數 。
  • 計算局部幅值:,和第一步一樣,得到局部包絡函數。
  • 從原始信號中分離出,得到。
  • 利用對進行解調,得到調頻函數,判斷是不是純調頻函數(振幅恒為1),如果不是就重復上述步驟,直到為純調頻函數;反之直接輸出。
  • 將所有局部包絡函數相乘,得到包絡信號。
  • 得到原始信號的第一個PF分量為包絡信號和純調頻函數乘積。
  • 用原始信號減去PF分量,再繼續前面六步,直到不能再分解,得到多個PF分量和一個余量。?
  • ?3.對比經驗模態分解EMD優缺點:

    優點:

  • 擁有比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实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。