?? 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 + -