基于MATLAB的小波去噪

% 小波分解与程序,Xk0是要分解的原始信号,step是表示要分解的层数
function [Xh,D]=decomposition(Xk0,step)
[h0,h1,g0,g1]=filtercoefficience;
Xh=Xk0';D=0;
for lstep=1:step
    N=length(Xh);
    Yk=fft(Xh,N);
    H0k=fft(h0,N);
    H1k=fft(h1,N);
    Xh=drawwing(ifft(Yk(1:N).*conj(H0k(1:N))));
    Xh=real(Xh);D=real(D);
    d=drawwing(ifft(Yk(1:N).*conj(H1k(1:N))));
   thrd= ddencmp('den','wv',d);%用默阈值进行消噪处理
    Td=abs(d)>thrd;
    d=Td.*d;
    D=[d,D];
end
 

function Xk=reconstructed(Xh,D,step)%信号重组函数
[h0,h1,g0,g1]=filtercoefficience;
n=length(Xh);
K=length(h0);
Xn=h0(1:K)-i*h1(1:K);
for t=1:step
    N=length(Xh);
    d=D(((2^(t-1)-1)*n+1):(2^t-1)*n);
    Xt=insert(Xh);Dt=insert(d);
    Yn=Xt(1:2*N)+i*Dt(1:2*N);
    Yk=fft(Yn,2*N);Xk=fft(Xn,2*N);
    XYn=ifft(Yk(1:2*N).*Xk(1:2*N));
    Xh=real(XYn);
end      
Xk=Xh';

B157

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/120320802