网站首页 > 技术教程 正文
说点其他的吧,简单回答一个知乎上的问题:
经验模态分解的非平稳信号数据滤波处理研究这个课题难嘛?
这个不难,不像小波一样有那么严格的理论推导,一旦一个方法数学理论不足,那你自己就可以随便搞了,自圆其说即可。
改进的话,你要了解一下EMD的相关背景。EMD是一种递归算法,利用信号极值的递归筛选 过程,将输入信号分解为固有的振荡模式,就是所谓的本征模态函数IMF。一个振荡信号能够被称为IMF 需满足两个条件:一是在其时间区间内, 模态的极值点数目和过零点的数目应当相等或者最多相差一个;二是在其时间区间内,分别由信号的局部极大值和极小值确定的上、下包络的均值为零。第一个条件保证了IMF是一个窄带信号;第二个条件则从信号局部特征的角度考虑,避免了由于信号波形不对称而引起的瞬时频率波动。
上图是一个典型的IMF,其极值点数目和过零点数目相同, 且上下包络的均值为零。IMF 类似于傅里叶变换得到的一个具有固定幅度和固定频率的分量,但是IMF包含了幅度调制和频率调制的特 性,因此更具一般性。
EMD 的分解过程具体来说,就是先对信号极值进行插值,并对上、下包络进行平均从而获得信号的局部均值,这些局部均值可视为信号中的低频成分的估计。然后将低频成分从输入信号中迭代分离出来,得到高频(快速振荡)成分,这就完成了一次筛分,。重复筛分过程,直到输入信号中的所有主要振荡模态都被提取出来。由于EMD完全是由数据驱动的,还避免了线性时频变换方法的很多局限性,如受Heisenberg 测不准原理限制而导致的有限时频分辨率和由使用固定基函数而获得的无意义的模态等。
小波变换之于机器学习就如同EMD之于深度学习。
然后,针对EMD的缺陷各路大佬进行了很多的改进。
虽然EMD在处理非线性非平稳信号方面具有较多优点,但是仍然有一些待解决的问题,主要包括:迭代停止准则和样条函数的选择问题、端点效应和模态混叠问题、 Hilbert 变换和分量正交性的问题等。EMD的一些改进版本,例如集成EMD (EEMD)、互补EEMD(CEEMD)和中值 EEMD (MEEMD) 等,在一定程度上修复了这些问题,但是应该说,EMD 中包括分解算法、IMF的定义以及上述的EMD算法的各种改进版本都是建立在经验基础之上的,目前仍然缺乏坚实的数学理论分析做支撑,可以说目前EMD的理论水平犹如小波变换在上世纪80年代初的水平,特别期望能有如 Daubechies(小波之母,沃尔夫奖获得者)那样能为小波变换奠定坚实理论基础的学者出现也能将基于EMD的时频分析方法置于坚实的数学理论之上。为了克服 EMD 理论分析上的困难,很多学者尝试用基于鲁棒约束优化的方法取代EMD中包络和局部均值估计,从理论上保证了算法能收敛到全局最优, 但这些方法会遇到没有可行解的问题。除了 EMD 的改进版本以外,很多学者还提出了一 些类似于EMD迭代筛分过程的新的分解算法来尝试解决这些问题。例如,局部均值分解,本征时间尺度分解,上述分解算法仍然都是基于经验的分解算法,分解结果也会受到端点效应和模态混叠的 影响。另外这些方法都需要准确估计信号的局部极值或者均值,但实际数据往往会被噪声干扰,不易准确估计这些极值或者均值,这使得这些方法的抗噪声能力也比较差。
鉴于此,采用经验模态分解结合去趋势波动分析对一维时间序列信号进行滤波降噪,运行环境为MATLAB,并给出了几个例子。
function u=L1_SplitBregmanIteration(f,A,mu,lambda,Niter)
%=================================================
%
% L1 Split Bregman Iteration
% u=L1_SplitBregmanIteration(f,A,mu,lambda,Niter)
%
% This function compute the solution
% u = arg min ||u||_1+0.5*mu||Au-f||_2^2
%
% by using the Split Bregman Iteration
%
% In this version we consider only
% the case where A is a square matrix
%
% f: measured data
% A: some linear operator in its matrix form
% mu: regularization coefficient
% lambda: "spliting" regularization coefficient
% Niter: maximum number of iteration
% Note: typically mu=10, lambda=1,
% Niter=10 work well
%=================================================
N=size(f,1);
d=zeros(N,1);
b=zeros(N,1);
u=zeros(N,1);
Z=zeros(N,1);
Ft=mu*A'*f;
IV=inv(mu*(A'*A)+lambda*eye(N));
err=norm(f,2);
tol=1e-3*err;
K=0;
while ((err>tol) && (K<Niter)),
K=K+1;
up=u;
u=IV*(Ft+lambda*(d-b));
tmp=u+b;
d=sign(tmp).*max(Z,abs(tmp)-1/lambda);
b=tmp-d;
err=norm(u-up,2);
end
完整代码:https://mbd.pub/o/bread/ZJybm5ht
擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
猜你喜欢
- 2024-11-06 基于MATLAB的刀具角度测量 matlab测工件尺寸
- 2024-11-06 「三十一」MATLAB图像变换之傅里叶变换
- 2024-11-06 「三十三」MATLAB图像变换之Radon变换(R变换)——投影重建图像
- 2024-11-06 「MATLAB数据导入与分析」MATLAB: 使用内存映射加快文件读写
- 2024-11-06 利用边缘检测计算物体面积(内含源码)
- 2024-11-06 自动驾驶毫米波雷达物体检测技术-算法
- 2024-11-06 基于粒子滤波器的电池剩余使用寿命计算matlab仿真
- 2024-11-06 「二十」MATLAB图像处理之六 matlab怎么做图像处理
- 2024-11-06 matlab程序, 脉冲波合成与提取,滑冲效应、方向性效应
- 2024-11-06 《基于PLE结合卡尔曼滤波的RSSI定位算法matlab仿真》基于PLE
你 发表评论:
欢迎- 05-1613步震撼淘宝大促闪光裂纹破墙立体字PS制作教程
- 05-16AI教程 | 绘制扁平的萌萌哒图标
- 05-160基础学平面设计所需了解的基础常识汇总
- 05-16自学平面设计需要多长时间?十六年职业设计总监告诉你
- 05-16平面设计都要学习哪些内容?
- 05-16李涛PS教程 高手之路PS教程 合成教程 —制作一个小星球
- 05-16Illustrator实例教程:制作炫酷的漩涡效果
- 05-16Illustrator实例教程:利用混合工具制作一朵炫酷的花
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)