clear allclearclcclf%清理变量,清屏,关闭图形窗口
load data %装载数据文件
for i=1:21 %for循环,从1到21
b=eemd(e(:,i),0.4,100)调用eemd()函数
bb(:,i)=b(:,4)+b(:,5)+b(:,6)+b(:,7)+b(:,8)+b(:,9) %b矩阵相加,即b矩阵的第4列+b矩阵的第5列+b矩阵的第6列+b矩阵的第7列+b矩阵的第8列+b矩阵的第9列的和赋值给bb矩阵的所有行第i列
end
wigb(bb),title('EEMD去噪') %调用wigb()函数,title图形的标题
for i=1:21 %for循环,从1到21
c=emd(e(:,i))%调用emd()函数并赋值给c
c(:,i)=c(2,:)+c(3,:)+c(4,:)+c(5,:)+c(6,:)%c矩阵相加,即c矩阵的第2行+c矩阵的第3行+c矩阵的第4行+c矩阵的第5行+c矩阵的第6行的和赋值给c矩阵的所有行第i列
end
end
figure(2) %建立第二个图形窗口
wigb(c),title('EMD去噪')%调用wigb()函数,title图形的标题
首先要定义函数,然后用函数名调用。这个说起来有点复杂,建议你百度matlab函数的使用或者看书上的函数定义,你就会明白的。
网页链接 网页链接这两个经验挺好的
这个分解是基于希尔伯特-黄变换和希尔伯特变换而来,通过黄变换滤除信号里局域的直流成分,短时内是纯交流成分。而之所以不直接使用希尔伯特变换后利用复信号的d(phi)/dt=w (phi是角度)的方式来求信号的瞬时频率,是因为信号可能存在非频率波动的成分,也就是说可能信号的波动是因幅值引起,这样求得的频率可能是负值,而希尔伯特变换的信号频率不存在负的,所以才需要以上的黄变换这个分解imf的过程。但这个分解精度纯粹因信号本身而异,存在一定的风险。不过据我认为,信号在离散的情况下,黄变换并不是必须的,只需要在希尔伯特变换之前加一些简单处理即可,这种方式得到的瞬时频率与用了imf后得到的再matlab下得到的图像基本一样。楼主可自己编写程序,这个程序包不是必须欢迎分享,转载请注明来源:内存溢出
评论列表(0条)