📄 ylj_denoise.m
字号:
function [sd]=ylj_denoise(mix_signal,yesplot)
%此函数用于去除白躁信号&周期性干扰信号
%输入参数mix_signal为采集到的信号波形,注意要转置成为列数据!
%yesplot为1时画图,为0时不画图
n=100000;
num=10;
p=0.6745;
w_dept=9;
w_name='db6';
coef=cell(1,w_dept);
coef_soft=cell(1,w_dept);
thr=zeros(1,w_dept+1);
[c,l]=wavedec(mix_signal,w_dept,w_name); %对混合信号S进行db2的9尺度一维分解
coef(1)={appcoef(c,l,w_name,w_dept)};%计算尺度为9的一维分解低频系数
thr(1)=median(abs(coef{1}))/p*sqrt(2*log(length(coef{1})));%计算1尺度上的阈值
thr1(1)=median(abs(coef{1}))/p*sqrt(2*log(n.*num));
coef_soft(1)={wthresh(coef{1},'h',thr(1))};%对小波系数进行阈值为thr(1)的硬阈值处理
coef_soft1(1)={wthresh(coef{1},'h',thr1(1))};
cs=[coef_soft{1}];
cs1=[coef_soft1{1}];
for j=2:w_dept+1
coef(j)={detcoef(c,l,w_dept-j+2)};%计算尺度为9到2的各尺度高频小波系数
coef1(j)={detcoef(c,l,w_dept-j+2)};
thr(j)=median(abs(coef{j}))/p*sqrt(2*log(length(coef{j})));%计算9到2各尺度上的阈值
thr1(j)=median(abs(coef1{j}))/p*sqrt(2*log(n.*num));
coef_soft(j)={wthresh(coef{j},'h',thr(j))};%对小波系数进行阈值为thr(j)的硬阈值处理
coef_soft1(j)={wthresh(coef1{j},'h',thr1(j))};
cs=[cs,coef_soft{j}];
cs1=[cs1,coef_soft1{j}];
end
sd=waverec(cs,l,w_name); %根据小波系数[cs,l]对信号进行重构
sd1=waverec(cs1,l,w_name);
s=waverec(c,l,w_name);%根据小波系数[c,l]对信号进行重构
s1=waverec(c,l,w_name);
%figure(2);
if yesplot==1;
%subplot(3,1,1);plot(mix_signal);
%subplot(3,1,2);plot(sd1);
%subplot(3,1,3);plot(sd)
plot(sd)
else if yesplot==0
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -