⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 emd3.m

📁 经验模态分解的扩展运用
💻 M
字号:
%emd3函数是自编函数,纯粹基于EMD分解进行去噪,其要调用一系列其他函数来实现。返回值是去去噪后的波形数据,和其经过EMD分解得到
%的各个imf的波形,同时将去噪后的结果和标准波形进行了对比,求出了其相关系数来衡量去噪的效果。输入变量为(eng,ecg)即是含噪的
%波形数据和标注波形数据。
function emd3=imf(x,ecg);%emd滤波函数,ecg是一个标准数据用来和去噪后的数据进行比较。
tic;%计时函数。
x=gui(x);%对x进行归一化。
n=x;%把x的值赋给n.
r1=0;
emd(n);%调用emd函数分解来得到各个imf.
a=ans;
for i=1:size(a,1)
    b=add(a,1,i);
    j=abs(mean(b));
    if j<0.0009
        continue;
    else
        break;
    end
end
i
r2=add(a,i,size(a,1));%调用add函数对各个有用的imf进行求和。
n=add(a,1,i-1);
corrcoef(r2,ecg)
picture(r2,ecg);
m=mean(r2-r1);
while abs(m)>0.0002%循环的控制条件,用求平均值的mean函数。循环去除大部分噪声信号。
    emd(n);
    a=ans;
    for i=1:size(a,1)
        b=add(a,1,i);
        j=abs(mean(b));
        if j<0.00035
            continue;
        else
            break;
        end
    end 
    i=min(i,5)
    r1=r2;
    r2=r2+add(a,i,size(a,1));
    n=add(a,1,i-1); 
    m=mean(r2-r1);
end
%r3=r2;
% r1=0;
% emd(r2);
% for i=1:ans
%     a=add(ans,1,i);
%     if mean(a)<0.001
%         continue;
%     else
%         i=i-1;
%     end
%     break;
% end 
%     if i==0
%         i=1;
%     end
% r2=add(ans,i+1,size(ans,1));
% n=add(ans,1,i);
% while mean(r2-r1)>0.001% 对有用信号再次进行emd滤波,进一步去除少量噪声。
%     emd(n);
%     for i=1:ans
%     a=add(ans,1,i);
%         if mean(a)<0.001
%             continue;
%         else
%             i=i-1;
%         end
%         break;
%     end
%     if i==0
%         i=1;
%     end
%     r1=r2;
%     r2=r2+add(ans,i+1,size(ans,1));
%     n=add(ans,1,i);
% end
% r4=r2+n;
emd(r2);
paint(ans);%调用paint函数绘出有用信号的各个imf.
picture(r2,ecg);%调用picture函数绘出原始信号和去噪后的信号,进行对比。
emd3=r2;
corrcoef(r2,ecg)%求出x和y的相关系数。
toc;
return;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -