• 大小: 5KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-14
  • 语言: Matlab
  • 标签: wavelet  

资源简介

基于多算法融合的小波降噪方法,可以实现一维信号的有效去噪,另外附有盲源分离代码!

资源截图

代码片段和文件信息

%FastICA算法代码 
%对数据进行标准化 
close all
load leleccum;
 s = leleccum(1:1000);
%load noisbloc; s = noisbloc;
figure(1);
plot(s);
title(‘原始信号‘);
%grid on;
xlabel(‘样本序号 n‘);
ylabel(‘幅值 A‘);
N = length(s);
k = 5;
[cl]=wavedec(sk‘db6‘); 
%Y = appcoef(cl‘db6‘k); 
%Y1 = appcoef(cl‘db6‘k);
%Y2 = appcoef(cl‘db6‘k);

%Z = appcoef(cl‘db6‘k);
 
 
%for i = 1:k
    
    %dx = detcoef(cli);
   N = length(s);
    %N = 1000;
   
    j = randint(11[1k]); 
   
   %{
    sigma=wnoisest(cl6);%估计一维小波的系数的标准偏差
 display(sigma);
 y=2*log(N)*sigma
 thr=sqrt(y);
 %}
    %A = median(abs(dx))/0.6745;
    %{
    A = median(abs(dx))/0.6745;
    T = sqrt(2*log10(N))/log10(j+1);
    thr = A*T;
    
    %}
    %thr = thselect(dx‘heursure‘);%SURE阈值选取
    %{
    sigma = wnoisest(cl6);
    alpha = 2;
    thr = wbmpen(clsigmaalpha);%全局阈值
    %}
   %{
    Q = sqrt(sum(abs(dx).^2)./N.^2);
    y = max(Q.^2-A.^2eps);
    C=sqrt(y);
    thr=A.^2./C;
    %}
S = ones(1k);
first = cumsum(l)+1;
first = first(end-2:-1:1);
ld = l(end-1:-1:2);
last = first+ld-1;
cxd = c;
lxd = l;

for i = 1:k
    flk = first(i):last(i);
 
        if S(i) < sqrt(eps) * max(c(flk))
             %A = median(abs(c(flk)))/0.6745;
   % thr = thselect(c(flk)‘heursure‘);
    thr = 0;
    %xd = c(flk);
   %T = A*sqrt(2*log(N));
    %thr = T/log(j+1);
    else
    thr = thselect(c(flk)/S(i)‘heursure‘);%SURE阈值选取
    end  
    %{
    A = median(abs(xd))/0.6745;
    T = A*sqrt(2*log(N));
    thr = T/log(j+1);

    %}
%A = median(abs(c))/0.6745;
%thr = A*sqrt(2*log(N));

%{
Q = sqrt(sum(abs(c).^2)./N.^2);
    y = max(Q.^2-A.^2eps);
    C=sqrt(y);
    thr=A.^2./C;
%}
    
thr  = thr * S(i);
%u = sqrt((abs(c(flk))-thr)./(abs(c(flk))+thr));
%a = thr./(norm(c(flk))*norm(u));
a = 0.6;
%end  
   xd = c(flk); 
    %}
     %A = (abs(dx)-thr)/N;
    %var = thr./exp(A);
   
    tmp = abs(xd)-a*thr;
    tmp = (tmp+abs(tmp))/2;
    value = (1-a)*sign(xd).*tmp;
    %}
   
    B = 2*xd./thr;
    def = 2*thr./(1+exp(B));
    tmp1 = xd-thr+def;
    value1 = a.*(tmp1);
    cxd(flk) = value+value1;%新阈值处理法
    
    %}
  %Y = [Y D]; 
   %{
  tmp = abs

评论

共有 条评论