為了更好的利用MATLAB自帶的vmd函數(shù),本期作者將詳細(xì)講解一下MATLAB自帶的vmd函數(shù)如何使用,以及如何畫漂亮的模態(tài)分解圖。
首先給出官方vmd函數(shù)的調(diào)用格式。
[imf,residual,info]?=?vmd(x)
函數(shù)的輸入:
這里的x是待分解的信號,一行或者一列都可以!
函數(shù)的輸出:
第一個(gè)參數(shù)位置--imf:vmd分解得到的IMF分量。
第二個(gè)參數(shù)位置--residual:殘余分量,殘差表示原始信號x中未被vmd分解的部分。
第三個(gè)參數(shù)位置--info,是一個(gè)結(jié)構(gòu)體,包含以下信息:
ExitFlag——終止標(biāo)志。值0表示算法在達(dá)到最大迭代次數(shù)時(shí)停止。值為1表示算法在滿足絕對和相對公差時(shí)停止。
CentralFrequencies——IMF的中心頻率。
NumIterations——迭代總數(shù)。
AbsoluteImprovement——在最后兩次迭代之間,IMF收斂的均方絕對改進(jìn)。
RelativeImprovement——在最后兩次迭代之間,IMF收斂的平均相對改進(jìn)。
LagrangeMultiplier?——上一次迭代時(shí)的頻域拉格朗日乘數(shù)。
示例:
以西儲大學(xué)軸承故障的105.mat為例,進(jìn)行vmd分解展示。代碼如下:
clc
clear
fs=12000;%采樣頻率
Ts=1/fs;%采樣周期
L=2000;%采樣點(diǎn)數(shù)
t=(0:L-1)*Ts;%時(shí)間序列
%----------------導(dǎo)入內(nèi)圈故障的數(shù)據(jù)-----------------------------------------
load 105.mat
X = X105_DE_time(1:L); %這里可以選取DE(驅(qū)動(dòng)端加速度)、FE(風(fēng)扇端加速度)、BA(基座加速度),直接更改變量名,挑選一種即可。
[imf,residual,info] = vmd(X);
figure(1);
[p,q] = ndgrid(t,1:size(imf,2));
plot3(p,q,imf)
grid on
xlabel('Time Values')
ylabel('Mode Number')
zlabel('Mode Amplitude')
選取105.mat的2000個(gè)采樣點(diǎn),進(jìn)行分解,結(jié)果圖如下所示:
還可以指定vmd的模態(tài)分解數(shù)和懲罰因子:
[imf,residual,info]?=?vmd(X,'NumIMF',6,'PenaltyFactor',2500,')
可以看到,模態(tài)分解數(shù)變成了6個(gè)。
當(dāng)分解模態(tài)數(shù)較多的時(shí)候,還可以這樣畫圖:
clc
clear
fs=12000;%采樣頻率
Ts=1/fs;%采樣周期
L=2000;%采樣點(diǎn)數(shù)
t=(0:L-1)*Ts;%時(shí)間序列
%----------------導(dǎo)入內(nèi)圈故障的數(shù)據(jù)-----------------------------------------
load 105.mat
X = X105_DE_time(1:L); %這里可以選取DE(驅(qū)動(dòng)端加速度)、FE(風(fēng)扇端加速度)、BA(基座加速度),直接更改變量名,挑選一種即可。
[imf,residual] = vmd(X,'NumIMF',9);
t1 = tiledlayout(3,3,TileSpacing="compact",Padding="compact");
for n = 1:9
ax(n) = nexttile(t1);
plot(t,imf(:,n)')
xlim([t(1) t(end)])
txt = ["IMF",num2str(n)];
title(txt)
xlabel("Time (s)")
end
title(t1,"Variational Mode Decomposition")
結(jié)果如下:
VMD去噪
對分解的信號進(jìn)行重構(gòu),即為去噪,代碼如下:
cleanX = sum(imf(:,2:8),2);
figure
plot(t,X,t,cleanX)
legend("Original X","Clean X")
xlabel("Time (s)")
ylabel("Signal")
這里選用IMF2-IMF8進(jìn)行相加,丟棄了IMF1和IMF9。為什么要這么做呢,這是MATLAB官方文檔給出的解釋:
第一種模式包含最多的噪聲,第二種模式是以重要特征的頻率振蕩。通過對除第一個(gè)和最后一個(gè)VMD模式之外的所有模式求和來構(gòu)建干凈的X信號,從而丟棄低頻基線振蕩和大部分高頻噪聲。
結(jié)果如下:
105.mat下載地址:https://engineering.case.edu/sites/default/files/105.mat文章來源:http://www.zghlxwxcb.cn/news/detail-738084.html
感覺作者總結(jié)還不錯(cuò)的,留個(gè)小小的贊吧!文章來源地址http://www.zghlxwxcb.cn/news/detail-738084.html
到了這里,關(guān)于matlab自帶VMD詳解,VMD去噪,VMD分解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!