matlab 空间模态,matlab中使用VMD(变分模态分解)

使用计算出的IMF绘制多分量信号的希尔伯特频谱。将频率范围限制为[0,40] Hz。

a78c43b9692322b253f84835c53ebc75.png

分段信号的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秒。绘制每个单独的分量和复合信号。

R

1

2

3

4

5

6

7

8

9

plot(t,6*t.^2)

xlabel('Time (s)')

ylabel('Quadratic trend')

nexttile(5,[12])

plot(t,x)

xlabel('Time (s)')

ylabel('Signal')

37778759aa530961419f9b5e60a82e93.png

执行变分模态分解以计算四个本征模式函数。信号的四个不同分量得以恢复。

通过添加模式函数和残差来重构信号。绘制并比较原始信号和重构信号。

R

1

2

3

4

5

6

plot(t,x,':','LineWidth',2)

xlabel('Time (s)')

ylabel('Signal')

holdoff

legend('Reconstructed signal','Original signal',...

'Location','northwest')

a9ec0f019ace3f78ca9b57d015617bf8.png

计算原始信号与重构信号之间的差异的范数。

使用VMD从ECG信号中去除噪声

在此示例中标记的信号来自MIT-BIH心律失常数据库  (信号处理工具箱)。数据库中的信号以360 Hz采样。

加载与记录200相对应的MIT数据库信号并绘制该信号。

R

1

2

3

plot(tm,ecgsig)

ylabel('Time (s)')

xlabel('Signal')

77bb9aad29d7097a66f6648b1c488511.png

ECG信号包含由心跳的节奏和振荡的低频模式驱动的尖峰。ECG的不同辐条会产生重要的高次谐波。

计算开窗信号的九种固有模态函数,可视化IMF。

0e1de43b043d3bd86eb8a17bf6ab8622.png

第一种模态包含最多的噪声,第二种模态以心跳的频率振荡。通过将除第一个和最后一个VMD模态之外的所有模态相加,构造一个干净的ECG信号,从而丢弃低频基线振荡和大部分高频噪声。

f8cd58f02a617dee5b51cc631bd5b3d3.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值