原文鏈接:http://tecdat.cn/?p=12486
撥號音信號的變模分解
創建一個以4 kHz採樣的信號,類似於撥打數字電話的所有鍵。將信號另存爲MATLAB®時間數據。
fs = 4e3;
t = 0:1/fs:0.5-1/fs;
繪製時間表的變分模態分解。
多分量信號的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')
使用計算出的IMF繪製多分量信號的希爾伯特頻譜。將頻率範圍限制爲[0,40] Hz。
分段信號的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')
執行變分模態分解以計算四個本徵模式函數。信號的四個不同分量得以恢復。
通過添加模式函數和殘差來重構信號。繪製並比較原始信號和重構信號。
plot(t,x,':','LineWidth',2)
xlabel('Time (s)')
ylabel('Signal')
hold off
legend('Reconstructed signal','Original signal', ...
'Location','northwest')
計算原始信號與重構信號之間的差異的範數。
使用VMD從ECG信號中去除噪聲
在此示例中標記的信號來自MIT-BIH心律失常數據庫 [3] (信號處理工具箱)。數據庫中的信號以360 Hz採樣。
加載與記錄200相對應的MIT數據庫信號並繪製該信號。
plot(tm,ecgsig)
ylabel('Time (s)')
xlabel('Signal')
ECG信號包含由心跳的節奏和振盪的低頻模式驅動的尖峯。ECG的不同輻條會產生重要的高次諧波。
計算開窗信號的九種固有模式函數,可視化IMF。
第一種模式包含最多的噪聲,第二種模式以心跳的頻率振盪。通過將除第一個和最後一個VMD模式之外的所有模式相加,構造一個乾淨的ECG信號,從而丟棄低頻基線振盪和大部分高頻噪聲。