国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

變分模態(tài)分解(VMD)-Python代碼

這篇具有很好參考價(jià)值的文章主要介紹了變分模態(tài)分解(VMD)-Python代碼。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

變分模態(tài)分解(VMD)-Python代碼


1、 VMD原理

變分模態(tài)分解(VMD)的原理推薦兩個(gè)參考連接 變分模態(tài)分解原理步驟和VMD算法的介紹

2、 VMD代碼

代碼可直接運(yùn)行文章來源地址http://www.zghlxwxcb.cn/news/detail-573935.html

import numpy as np
import matplotlib.pyplot as plt
from vmdpy import VMD
# -----測(cè)試信號(hào)及其參數(shù)--start-------------
Fs=1000 # 采樣頻率
N=1000 # 采樣點(diǎn)數(shù)
t=np.arange(1,N+1)/N
fre_axis=np.linspace(0,Fs/2,int(N/2))
f_1=100;f_2=200;f_3=300
v_1=(np.cos(2*np.pi*f_1*t));v_2=1/4*(np.cos(2*np.pi*f_2*t));v_3=1/16*(np.cos(2*np.pi*f_3*t))
v=[v_1,v_2,v_3] # 測(cè)試信號(hào)所包含的各成分
f=v_1+v_2+v_3+0.1*np.random.randn(v_1.size)  # 測(cè)試信號(hào)
# -----測(cè)試信號(hào)及其參數(shù)--end----------
# alpha 懲罰系數(shù);帶寬限制經(jīng)驗(yàn)取值為抽樣點(diǎn)長(zhǎng)度1.5-2.0倍.
# 懲罰系數(shù)越小,各IMF分量的帶寬越大,過大的帶寬會(huì)使得某些分量包含其他分量言號(hào);
# a值越大,各IMF分量的帶寬越小,過小的帶寬是使得被分解的信號(hào)中某些信號(hào)丟失該系數(shù)常見取值范圍為1000~3000
alpha=2000
tau=0 # tau 噪聲容限,即允許重構(gòu)后的信號(hào)與原始信號(hào)有差別。
K=3 # K 分解模態(tài)(IMF)個(gè)數(shù)
DC=0 # DC 若為0則讓第一個(gè)IMF為直流分量/趨勢(shì)向量
init=1 # init 指每個(gè)IMF的中心頻率進(jìn)行初始化。當(dāng)初始化為1時(shí),進(jìn)行均勻初始化。
tol=1e-7 # 控制誤差大小常量,決定精度與迭代次數(shù)
u, u_hat, omega = VMD(f, alpha, tau, K, DC, init, tol) # 輸出U是各個(gè)IMF分量,u_hat是各IMF的頻譜,omega為各IMF的中心頻率

# 1 畫原始信號(hào)和它的各成分
plt.figure(figsize=(10,7));plt.subplot(K+1, 1, 1);plt.plot(t,f)
for i,y in enumerate(v):
    plt.subplot(K+1, 1, i+2);plt.plot(t,y)
plt.suptitle('Original input signal and its components');plt.show()

# 2 分解出來的各IMF分量
plt.figure(figsize=(10,7))
plt.plot(t,u.T);plt.title('all Decomposed modes');plt.show()  # u.T是對(duì)u的轉(zhuǎn)置

# 3 各IMF分量的fft幅頻圖
plt.figure(figsize=(10, 7), dpi=80)
for i in range(K):
    plt.subplot(K, 1, i + 1)
    fft_res=np.fft.fft(u[i, :])
    plt.plot(fre_axis,abs(fft_res[:int(N/2)])/(N/2))
    plt.title('(FFT) amplitude frequency of IMF {}'.format(i + 1))
plt.show()

# 4 分解出來的各IMF分量的頻譜
# print(u_hat.shape,t.shape,omega.shape)
plt.figure(figsize=(10, 7), dpi=80)
for i in range(K):
    plt.subplot(K, 1, i + 1)
    plt.plot(fre_axis,abs(u_hat[:, i][int(N/2):])/(N/2))
    plt.title('(VMD)amplitude frequency of the modes{}'.format(i + 1))
plt.tight_layout();plt.show()

# 5 各IMF的中心頻率
plt.figure(figsize=(12, 7), dpi=80)
for i in range(K):
    plt.subplot(K, 1, i + 1)
    plt.plot(omega[:,i]) # X軸為迭代次數(shù),y軸為中心頻率
    plt.title('mode center-frequencies{}'.format(i + 1))
plt.tight_layout();plt.show()

plt.figure(figsize=(10,7))
plt.plot(t,np.sum(u,axis=0))
plt.title('reconstructed signal')
以上就是所有內(nèi)容,感謝敢看!求三連!

到了這里,關(guān)于變分模態(tài)分解(VMD)-Python代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包