⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vssnlms_1.m

📁 自适应滤波算法
💻 M
字号:
function [out h mu] = vsslms_1(refr,echo,order,W,mu_max,mu_opt,lambda,beta)

%根据一段误差信号(输出)能量的平均
%lambda 系数遗忘因子
%beta 步长调整系数

%lambda = 0.99;   %遗忘因子
%lambda_p = 0.9;  %功率遗忘因子
%beta = 0.001;

mu(1) = mu_max;
N = length(refr);

xn = zeros(1,order);
xe = zeros(1,order);
pow_e = 0;  %误差信号功率
%pow_x = 0;  %输入信号功率
% 变步长nlms 算法
for i = 1 : N
    xn(2:order) = xn(1:order-1);    
    xn(1) = refr(i);    
    
    xx= xn*xn'; 
    normX = xx + 0.00001;
    y=xn*W';
    e(i)=echo(i)-y; %echo is dn
    
    xe(2:order) = xe(1:order-1);    
    xe(1) = e(i);   
    
    pow_e = sum(abs(xe.^2))/order;
%     pow_e = (1-lambda_p)*pow_e + lambda_p*abs(e(i)^2);
%     pow_x = (1-lambda_p)*pow_x + lambda_p*abs(echo(i)^2);
    
    mu(i+1)=lambda*mu(i)+beta*pow_e;  
    if mu(i+1)>=mu_max
       mu(i+1)=mu_max;
    else
        mu(i+1) = mu_opt;
    end;

    W = W + mu(i)/normX*conj(e(i))*xn; %  update filter coefficient vector
    
end

    out = e;
    h = fliplr(W);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -