变分模态分解 python_Variational Mode Decomposition (变分模态分解)

本文介绍了变分模态分解(VMD),它用于将信号分解为不同频率的子信号。文章详细阐述了VMD的基本概念、解析信号的性质以及如何通过希尔伯特变换进行调频。接着,通过一个信号降噪问题,讨论了VMD的不适定问题和正则化方法。此外,还展示了如何使用Python实现VMD算法,并通过实例解释了VMD的端点效应及其处理方法。
摘要由CSDN通过智能技术生成

标签(空格分隔): 数学

这一篇写一下变分模态分解(原始论文:Variational Mode Decomposition),跟原始论文思路思路一致但有一点点不太一样,原始论文写的很好,但我不是通信专业没有学过信号相关课程一开始看起来有点费劲。模态分解认为信号是由不同“模态”的子信号叠加而成的,而变分模态分解则认为信号是由不同频率占优的子信号叠加而成的,其目的是要把信号分解成不同频率的子信号。变分模态分解的分解结果如图所示

基础

一开始论文看不懂的原因是缺少相关前置知识,但一旦顺下来就会感觉其实没有那么难,难的是作者的思路很巧妙,先写下我遇到的这些知识盲点

第一点是傅立叶变换的微分性质,

的傅立叶变换为

,其导数

的傅立叶变换为

另一点是解析信号,现实世界只能采集实信号,但实信号有很多不好用的性质,如存在负频率,无法直接得到调制频率后的实信号等。 设原始信号是一个实信号

为了方便表示

为随

变化的函数,相当于瞬时频率,解析信号是一个复信号,可以通过希尔伯特变换得到

解析信号的实部是原本的实数信号,并且经过调频之后复数信号的实部仍然是调频之后的实信号,如对信号

增加频率

,只需要乘以

即可

由此,其实部相当于在原本频率

的基础上增加了频率

,如下面的matlab脚本

clear;close all;clc;

t = 1:0.01:10;

%%

f1 = sin(20*t).*(t-5).^2;

subplot(3,1,1);

plot(f1);

ylim([-25 25]);

%%

f2 = sin(50*t).*(t-5).^2;

subplot(3,1,2);

plot(f2);

ylim([-25 25]);

%%

H = hilbert(f1);

f_hat = H.*exp(1i*30.*t);

subplot(3,1,3);

plot(real(f_hat));

ylim([-25 25]);

matlab的hilbert函数包括希尔伯特变换和解析函数转换两部分,直接得到实信号的解析信号,其中希尔伯特变换

正文

接下来我们看看如何一步一步得到变分模态分解的思路

原论文通过一个信号降噪问题进行说明,现需要对采样信号

进行降噪重构,假设观测信号是由原始信号叠加一个独立的高斯噪音

,需要求

,又说该等式是一个不适定问题(ill-posed problem),不满足识定问题的三个条件,所以要用一个正则化的方法

第一部分是对原信号进行重构,第二部分是为了解决不适定问题的解不唯一,而且不同于机器学习的建模问题一样

是一个权值形式可以直接加权值

的L1-norm或L2-norm,这里的

是一个纯函数的形式,其导数的L2-norm最小化感觉上应该是保证了函数

不会产

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值