【信号去噪】基于小波模极大值数字信号去躁附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法       神经网络预测       雷达通信       无线传感器        电力系统

信号处理              图像处理               路径规划       元胞自动机        无人机 

⛄ 内容介绍

小波分析在时域和频域具有很好的局部化特性,是分析和处理数字信号强有力的工具.文章将基于小波变换的模极大值去噪算法应用到心电信号的去噪研究中.首先依据相关理论验证算法的有效性,并对心电数据进行去噪分析处理.结果表明,去噪后的信号有效去除了大部分毛刺,去噪效果良好,噪声得到很好的抑制.

⛄ 部分代码

 N=1024;n1=7;

   n=0:N-1;

   Fs=500;

   t=n/Fs;

   x=1*sin(2*pi*10*t);

   y=1.4*rand(1,1024);

   for  i=1:length(y)

   if y(1,i)>0.96

       y(i)=4;

       else if y(1,i)>0.92

               y(1,i)=2;

        else

               y(1,i)=0;

   end

   end

   end

   a=0;

   for  i=1:length(y)

   if y(1,i)>0

       a=a+1;

   else a=a;

   end

   end

   a

  signal=x+y;

  xref=x;

  points=1024;        level=4;    sr=360;   num_inter=6;   wf='db3'; 

%所处理数据的长度    分解的级数   抽样率    迭代次数        小波名称 

offset=0; 

%____进行二进制小波变换(离散平稳小波变换),并给出各级波形: 

[Lo_D,Hi_D,Lo_R,Hi_R]=wfilters(wf); 

[swa,swd] = swt(signal,level,Lo_D,Hi_D); 

figure; 

subplot(level,1,1); plot(real(signal));

title('含噪声信号'),grid on;axis tight; 

for i=1:level 

    subplot(level+1,2,2*(i)+1); 

    plot(swa(i,:)); axis tight;grid on;xlabel('time'); 

    ylabel(strcat('a   ',num2str(i))); 

    subplot(level+1,2,2*(i)+2); 

    plot(swd(i,:)); axis tight;grid on; 

ylabel(strcat('d   ',num2str(i))); 

end 

%____求小波变换的模极大值及其位置,并按级给出小波变换模极大的波形: 

% swa:小波概貌;  swd:小波细节; 

% ddw:局部极大位置; wpeak:小波变换的局部极大序列。 

ddw=zeros(size(swd)); 

pddw=ddw; 

nddw=ddw; 

posw=swd.*(swd>0); 

pdw=((posw(:,1:points-1)-posw(:,2:points))<0); 

pddw(:,2:points-1)=((pdw(:,1:points-2)-pdw(:,2:points-1))>0); 

negw=swd.*(swd<0); 

ndw=((negw(:,1:points-1)-negw(:,2:points))>0); 

nddw(:,2:points-1)=((ndw(:,1:points-2)-ndw(:,2:points-1))>0); 

ddw=pddw|nddw; 

ddw(:,1)=1; 

ddw(:,points)=1; 

wpeak=ddw.*swd; 

wpeak(:,1)=wpeak(:,1)+1e-10; 

plot(signal(1:points),'r'); 

title('含噪声信号')

axis([1 points -5 5]); 

subplot(513) 

plot(pswa(1:points),'r'); 

title('极值去噪')

axis([1 points -5 5]); 

subplot(514) 

plot(xh(1:points)); 

title('硬阈值去噪')

axis([1 points -5 5]); 

subplot(515) 

plot(xs(1:points)); 

title('软阈值去噪')

axis([1 points -5 5]); 

 snr0=20*log10(norm(signal)/norm(y))

 snr=20*log10(norm(pswa)/norm(pswa-x)) 

 snr1=20*log10(norm(xh)/norm(xh-x))

 snr2=20*log10(norm(xs)/norm(xs-x))

⛄ 运行结果

⛄ 参考文献

[1] 罗娜, 王利兵, 王静,等. 基于小波模极大值的地震信号去噪研究[J]. 山西地震, 2015(2):5.

[2] 刘云. 基于Blackman窗函数插值的小波模极大值去噪算法[D]. 河南理工大学.

[3] 张兆宁, 董肖红, 潘云峰. 基于小波变换模极大值去噪方法的改进[J]. 电力系统及其自动化学报, 2005, 17(2):4.

⛳️ 代码获取关注我

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

matlab科研助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值