• 5星
4KB weixin_42696271 2021-09-11 16:43:22
• 17KB qq_32944983 2019-02-24 10:34:34
• ## 经验模态分解算法EMD MATLAB程序 程序

4KB dianxin2ban 2018-07-20 15:19:40
• 3星
5KB dls54321 2018-04-01 17:49:33
• 2.66MB weixin_46269579 2020-12-29 10:45:13
• 5星
12KB u012844812 2015-09-14 19:34:58
• ## emd算法的matlab实现 emd matlab

246KB tianba112 2017-03-22 16:00:39
• 859KB chen1540524015 2015-06-22 11:21:40
• 1KB yangyang3401 2019-11-02 19:49:32
• ## matlab emd工具箱最新版 matlab emd

5星
454KB makenothing 2017-01-10 23:15:45
• 22KB u011188097 2015-06-02 17:22:33
• 5星
15KB u012113339 2014-03-08 16:31:59
• 604KB loukai1992 2016-03-09 15:04:15
• 583KB weixin_42696333 2021-09-10 20:22:17
• clear;clc;tic;N=512;fs=512;t=0:1/fs:(N-1)/fs;xinhao=sin(2*pi*50*t)+0.3*sin(5.5*pi*50*t);plot(xinhao);title('');...imf=sigmatching_emd(xinhao,[0.02,0.5,0.05],0);plot_emd_result(imf);...

clear;
clc;
tic;
N=512;
fs=512;
t=0:1/fs:(N-1)/fs;
xinhao=sin(2*pi*50*t)+0.3*sin(5.5*pi*50*t);
plot(xinhao);
title('');
xlabel('');
ylabel('');
imf=sigmatching_emd(xinhao,[0.02,0.5,0.05],0);
plot_emd_result(imf);
toc
function imf=sigmatching_emd(x,stop_condition,display)
if nargin<3
display=0;
end
if nargin<2;
stop_condition=[0.05,0.5,0.05];
display=0;
end
r=x;
k=1;
while ~stop_EMD(r);
m=r;
[stop_sift,moyenne]=stop_sifting(m,stop_condition,display);
if (max(abs(m)))
break
end
while ~stop_sift
m=m-moyenne;
[stop_sift,moyenne]=stop_sifting(m,stop_condition,display);
end
imf(k,:)=m;
k=k+1;
r=r-m;
end
imf(k,:)=r;
end
%--------------------------------------------------------------------------
function stop=stop_EMD(r)
[indmin indmax]=extr(r);
ner=length(indmin)+length(indmax);
stop=ner<3;
end
%--------------------------------------------------------------------------
function [envmoy,nem,nzm,amp]=compute_mean(m,t,display)
NBSYM=2;
[indmin,indmax,indzer]=extr(m);
nzm=length(indzer);
nem=length(indmin)+length(indmax);
if display==1;
figure
subplot(3,1,1)
plot(m);
subplot(3,1,2)
box on
hold on
plot(m);
plot(indmin,m(indmin),'r.');
plot(indmax,m(indmax),'c.');
hold off
end
[lz,rz,sig]=ppyt(m);
[indmin,indmax]=extr(sig);
[tmin,tmax,mmin,mmax]=boundary_conditions_emd(indmin,indmax,1:length(sig),sig,sig,NBSYM);
envmin=interp1(tmin,mmin,[(lz+1):(length(t)+lz)],'spline');
envmax=interp1(tmax,mmax,[(lz+1):(length(t)+lz)],'spline');
envmoy=(envmin+envmax)/2;
amp=mean(abs(envmax-envmin),1)/2;
if display==1;
subplot(3,1,3)
box on
hold on
plot(m);
plot(envmin,'r-');
plot(envmax,'c-');
plot(envmoy,'y-');
hold off
end
end
%--------------------------------------------------------------------------
function [stop,envmoy]=stop_sifting(m,stop_condition,display)
sd=stop_condition(1);
sd2=stop_condition(2);
tol=stop_condition

展开全文
weixin_33347911 2021-04-22 03:16:51
• 188KB alatebloomer 2017-10-13 11:07:16
• ## Matlab-EMD工具箱+最新版emd. matlab emd

5星
541KB makenothing 2017-01-11 00:05:04
• ## 基于matlab的EMD算法实现代码 matlab Emd

857KB wv0uue68 2020-12-11 21:03:24
• ## EMD Matlab工具包 EMD Matlab

5星
24KB xiazhaoqiang 2011-11-17 22:24:28
• 1KB qq_41973065 2018-04-09 19:57:17
• 2KB chenyf860625 2012-08-29 20:01:44
• 4星
34KB xuguruogu 2012-11-02 13:54:27
• 112KB u012115453 2018-12-20 22:02:41
• 5星
99KB makenothing 2014-02-27 15:13:41
• 4KB pigpigabc123 2011-03-25 16:42:26
• EMD算法的matlab程序介绍解析》由会员分享，可在线阅读，更多相关《EMD算法的matlab程序介绍解析(6页珍藏版)》请在人人文库网上搜索。1、此版本为 ALAN 版本的整合注释版function imf =emd(x%Empiricial Mode ...

《EMD算法的matlab程序介绍解析》由会员分享，可在线阅读，更多相关《EMD算法的matlab程序介绍解析(6页珍藏版)》请在人人文库网上搜索。
1、此版本为 ALAN 版本的整合注释版function imf =emd(x%Empiricial Mode Decomposition (Hilbert-HuangTransform%imf =emd(x%Func :findpeaksx=transpose(x(:;%转置为行矩阵imf =;while ismonotonic(x%当 x 不是单调函数,分解终止条件x1=x;sd =Inf;%均值%直到 x1满足 IMF 条件,得 c1while (sd0.1 |isimf(x1%当标准偏差系数 sd 大于 0.1或 x1不是固有模态函数时,分 量终止条件s1=getspline(x1;%上包。
2、络线s2=-getspline(-x1;%下包络线x2=x1-(s1+s2/2;%此处的 x2为文章中的 hsd =sum(x1-x2.2/sum(x1.2;x1=x2;endimfend+1=x1;x =x-x1;endimfend+1=x;%FUNCTIONSfunction u =ismonotonic(x%u=0表示 x 不是单调函数, u=1表示 x 为单调的u1=length(findpeaks(x*length(findpeaks(-x;if u10, u =0;else, u =1; endfunction u =isimf(x%u=0表示 x 不是固有模式函数, u=1表示 。
3、x 是固有模式函数N =length(x;u1=sum(x(1:N-1.*x(2:N1, u =0;else, u =1; endfunction s =getspline(x%三次样条函数拟合成元数据包络线N =length(x;p =findpeaks(x;s =spline(0p N+1,0x(p0,1:N;-function n =findpeaks(x%Find peaks. 找到极值 ,n 为极值点所在位置%n =findpeaks(xn =find(diff(diff(x0 x(n;n(u=n(u+1;-function plot_hht00(x,Ts%双边带调幅信号的 EMD 。
4、分解%Plot the HHT.%plot_hht(x,Ts%:Syntax%The array (列 x is the input signal and Ts is the sampling period (取样周期 . %Example on use:x,Fs=wavread(Hum.wav;%plot_hht(x(1:6000,1/Fs;%Func :emd%Get HHT.clear all;close all;Ts=0.0005;t=0:Ts:10;%采样率 2000HZ%调幅信号%x=sin(2*pi*t.*sin(40*pi*t;x=sin(2*pi*t;s1=getspline。
5、(x;%上包络线s2=-getspline(-x;%上包络线x1=(s1+s2/2;%此处的 x2为文章中的 hfigure;plot(t,x;xlabel(Time,ylabel(Amplitude;title(双边带调幅信号 ;hold on;plot(t,s1,-r;plot(t,s2,-r;plot(t,x1,g;imf =emd(x;for k =1:length(imfb(k=sum(imfk.*imfk;th =angle(hilbert(imfk;dk=diff(th/Ts/(2*pi;endu,v=sort(-b;b =1-b/max(b;%Set time-frequenc。
6、y plots.N =length(x;c =linspace(0,(N-2*Ts,N-1;%figure;for k =v(1:2plot(c,dk,k.,Color,b(kk k,MarkerSize,3;hold on;set(gca,FontSize,8,XLim,0c(end,YLim,050;%设置 x 、 y 轴句柄 xlabel(Time,ylabel(Frequency;title(原信号时频图 ;end%Set IMF plots.M =length(imf;N =length(x;c =linspace(0,(N-1*Ts,N;for k1=0:4:M-1figurefor k2=1:min(4,M-k1,subplot(4,1,k2,plot(c,imfk1+k2;set(gca,FontSize,8,XLim,0c(end;title(EMD分解结果 ;endxlabel(Time;end。

展开全文
weixin_39598094 2021-04-19 05:28:22
• 14KB weixin_38654855 2021-06-12 09:55:55
• ## EMD分析 Matlab 精华总结（转载！目前为止最详细的） matlab 开源工具

EMD（Empirical Mode Decomposition）EEMD和HHT（Hilbert-Huang Transform），简单介绍及详细工具箱安装，适合初学，用于仿真
 EMD分析 Matlab 精华总结 附开源工具箱（全）（转载 文末有原地址）

前言：
本贴写于2016年12与15日，UK。最近在学习EMD（Empirical Mode Decomposition）和HHT（Hilbert-Huang Transform）多分辨信号处理，FQ回百度（好奇怪，哪儿的墙）寻找资源，然而却发现大部分的资料对于基于Matlab的EMD的介绍和安装介绍，不够详细，而且在安装和使用过程中遇到的问题也未能总结一二，然而，还有一些C某DN的作者，Goolge免费的资源你要大家5分去下载？起码也得1分，本贴介绍的资源下载，放在C某DN，每个资源1分（为满足楼主虚荣心）。因此我为需要学习和使用EMD的你们总结了EMD使用经验贴，源代码下载链接，和安装步骤，亲测可用，祝好，Allen。
PS： 本人使用的是Matlab 2016a 版本

概要：
本经验贴介绍一下几个内容：
1） EMD和HHT信号分析的详细介绍。
2） EMD下载，安装和使用方法。
a) 介绍黄先生推荐的中央大学的EMD工具箱
b) 介绍G-Rilling开源的工具箱
3） 时频工具箱下载，安装和使用方法
PS：在2）b)内容中，G-Rilling开源的EMD算法中，使用了3）时频工具箱（Time-Frequency Toolbox）的算法，因此需要安装此工具箱。

正文：
1） EMD和HHT信号分析的详细介绍。本贴实为资料搬运贴，因此我不展开详细介绍（其实我也不懂，:-D），本人总结了几个号的详细介绍帖子给大家。
a) HHT研究背景介绍。EMD算法实为HHT变换中的一个算法（EMD+Hilbert Transform），传送门。
b) 国立中央大学，HHT算法介绍，传送门。
c)  知乎HHT介绍，传送门。
d)  包络谱和包络分析的介绍，传送门。
e)  正宗原汁原味的HHT英文介绍（强烈推荐），传送门。
2)  EMD下载，安装和使用方法。 本文介绍两个开源代码，中央大学和G-Rilling的，亲测可用。
a）中央大学EMD工具箱，源代码下载传送门。（PS：注意，上门一小节1）b）里面中央大学官网的EMD代码里面有一次错误，本传送门的资源已修正）
安装步骤：1）将此文件夹解压到Matlab根部录下的toolbox文件夹下：
举个栗子，我的toolbox文件夹根目录：D:\Program Files\Matlab 2016a\toolbox
2）将源代码文件（文件夹为EMD）添加到Matlab路径，File- Set Path- Add with Subfolders, Matlab 2013 以上版本添加方法如下：
开玩笑，我才不会那么无聊写给你，传送门。

-------------------------------    我是分割线, 怕大家搞混了，上门中央大学，下面G-Rilling   -------------------------------------------------------

b) G-Rilling EMD工具箱，源代码下载传送门（注意，此工具箱需要配合使用时频工具箱使用，具体原因请在上文查看）。
安装步骤： 1）将此文件夹解压到Matlab根部录下的toolbox文件夹下：
举个栗子，我的toolbox文件夹根目录：D:\Program Files\Matlab 2016a\toolbox
2）将源代码文件（文件夹为package_emd）添加到Matlab路径，File- Set Path- Add with Subfolders, Matlab 2013 以上版本添加方法如下：
开玩笑，我才不会那么无聊写给你，传送门。
3）运行install_emd.m文件可以实现此工具箱的安装，uninstall_emd.m实现卸载。
什么？你不会运行.m文件（注意，此方法使用者需要认识英文单词RUN）？ 切换到此package_emd路径，右键单击install文件，上图：

图1. 运行install_emd文件添加G-Rilling的EMD工具箱
具体算法函数和用法介绍，以及demo，请参考： http://blog.sina.com.cn/s/blog_6163bdeb0102e2cd.html
3） Matlab 时频工具箱 (TFTB Toolbox) 安装步骤, 源代码下载传送门。
安装步骤：
1）将此文件夹解压到Matlab根部录下的toolbox文件夹下：
举个栗子，我的toolbox文件夹根目录：D:\Program Files\Matlab 2016a\toolbox
2）将源代码文件（文件夹为TFTB）添加到Matlab路径，File- Set Path- Add with Subfolders, Matlab 2013 以上版本添加方法如下：
开玩笑，我才不会那么无聊写给你，传送门。

至此，此文EMD下载，安装和使用方法的介绍结束。

特别感谢原作者
BrowserSnake，另附链接http://www.cnblogs.com/BrowserSnake/p/6185523.html

希望对初学者有帮助，少走弯路


展开全文
kz619 2017-11-20 17:24:58
• 5星
18KB z196389679 2014-08-26 19:46:35
• emd.m文件function imf = emd(x)% Empiricial Mode Decomposition (Hilbert-Huang Transform)% EMD分解或HHT变换% 返回值为cell类型，依次为一次IMF、二次IMF、...、最后残差x = transpose(x(:)); %将x转置为行矩阵...

emd.m文件
function imf = emd(x)
% Empiricial Mode Decomposition (Hilbert-Huang Transform)
% EMD分解或HHT变换
% 返回值为cell类型，依次为一次IMF、二次IMF、...、最后残差
x   = transpose(x(:));            %将x转置为行矩阵
imf = [];
while ~ismonotonic(x)            %当x(残余函数)不是单调函数时，分解终止条件
x1 = x;
sd = Inf;
while (sd > 0.1) || ~isimf(x1)    %当标准偏差系数sd大于0.1或X1不是固有模态函数时，
分量终止条件(类柯西收敛准则：当sd介于0.2—0.3之
间时，筛选过程停止)
s1 = getspline(x1);        % 极大值点样条曲线
s2 = -getspline(-x1);       % 极小值点样条曲线
x2 = x1-(s1+s2)/2;        %h(t)=x(t)-m(t)其中m(t)为包络线的平均值
sd = sum((x1-x2).^2)/sum(x1.^2);  %筛选停止准则
x1 = x2;  %x2即h(t)
end
imf{end+1} = x1;                  %n=n+1   Cn=h(t),得imf分量
x = x-x1;                         %r=x(t)-Cn
end
imf{end+1} = x;
% 是否单调
function u = ismonotonic(x)            %判断单调性函数
u1 = length(findpeaks(x))*length(findpeaks(-x));
if u1 > 0
u = 0;                           %u = 0表示x不是单调函数
else
u = 1;                           %u =1表示x是单调函数
end
% 是否IMF分量
function u = isimf(x)                  %判断是否为固有模态函数
N  = length(x);
u1 = sum(x(1:N-1).*x(2:N) < 0);         % 过零点的个数
u2 = length(findpeaks(x))+length(findpeaks(-x));    % 极值点的个数
if abs(u1-u2) > 1   %imf条件：(1)过零点数量与极值点数量必须相等或最多相差不能多于
一个。
(2)极大值、极小值包络均值为零u(t)+m(t)=0
u = 0;                   %u=0表示x不是固有模态函数
else
u = 1;                   %u=1表示x是固有模态函数
end
% 据极大值点构造样条曲线
function s = getspline(x)       %三次样条函数拟合成数据包络线
N = length(x);
p = findpeaks(x);
s = spline([0 p N+1],[0 x(p) 0],1:N);  %yy=spline[X,Y,xx]用三次样条的方法得到yy

展开全文
weixin_35962351 2021-04-22 08:34:41
• ## emd_matlab_EMD_源码 matlab EMD

3KB weixin_42685438 2021-10-03 03:54:41

...

matlab 订阅