天天看點

拓端tecdat|matlab代寫使用VMD(變分模态分解)

matlab中使用VMD(變分模态分解)

撥号音信号的變模分解

建立一個以4 kHz采樣的信号,類似于撥打數字電話的所有鍵。将信号另存為MATLAB®時間資料。

fs = 4e3;
t = 0:1/fs:0.5-1/fs;      
拓端tecdat|matlab代寫使用VMD(變分模态分解)

繪制時間表的變分模态分解。

拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)

多分量信号的VMD

生成由頻率為2 Hz,10 Hz和30 Hz的三個正弦波組成的多分量信号。正弦波以1 kHz采樣2秒。将信号嵌入方差為0.01²的高斯白噪聲中。

計算噪聲信号的IMF,并在3-D圖中可視化它們。

plot3(p,q,imf)
grid on
xlabel('Time Values')
ylabel('Mode Number')
zlabel('Mode Amplitude')      
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)

使用計算出的IMF繪制多分量信号的希爾伯特頻譜。将頻率範圍限制為[0,40] Hz。

拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)

分段信号的VMD

生成一個由二次趨勢,線性調頻信号和餘弦組成的分段複合信号,在t  = 0.5時,兩個恒定頻率之間會發生急劇過渡  。

x(t)= 6t2 + cos(4πt+10πt2)+ {cos(60πt),cos(100πt-10π),t≤0.5,t> 0.5。

信号以1 kHz采樣1秒。繪制每個單獨的分量和複合信号。

plot(t,6*t.^2)
xlabel('Time (s)')
ylabel('Quadratic trend')

nexttile(5,[1 2])
plot(t,x)
xlabel('Time (s)')
ylabel('Signal')      
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)

執行變分模态分解以計算四個本征模式函數。信号的四個不同分量得以恢複。

通過添加模式函數和殘差來重構信号。繪制并比較原始信号和重構信号。

plot(t,x,':','LineWidth',2)
xlabel('Time (s)')
ylabel('Signal')
hold off
legend('Reconstructed signal','Original signal', ...
       'Location','northwest')      
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)

計算原始信号與重構信号之間的差異的範數。

使用VMD從ECG信号中去除噪聲

在此示例中标記的信号來自MIT-BIH心律失常資料庫 (信号處理工具箱)。資料庫中的信号以360 Hz采樣。

加載與記錄200相對應的MIT資料庫信号并繪制該信号。

plot(tm,ecgsig)
ylabel('Time (s)')
xlabel('Signal')      
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)

ECG信号包含由心跳的節奏和振蕩的低頻模式驅動的尖峰。ECG的不同輻條會産生重要的高次諧波。

計算開窗信号的九種固有模式函數,可視化IMF。

拓端tecdat|matlab代寫使用VMD(變分模态分解)
拓端tecdat|matlab代寫使用VMD(變分模态分解)

第一種模式包含最多的噪聲,第二種模式以心跳的頻率振蕩。通過将除第一個和最後一個VMD模式之外的所有模式相加,構造一個幹淨的ECG信号,進而丢棄低頻基線振蕩和大部分高頻噪聲。

拓端tecdat|matlab代寫使用VMD(變分模态分解)

繼續閱讀