当前位置:   article > 正文

自适应滤波器 | 时域ALE算法_自适应线谱增强

自适应线谱增强

自适应滤波器

一、时域自适应线谱增强器
二、时域ALE算法



前言

Widrow 等人提出了自适应线谱增强器(Adaptive Line Enhancer,简记为 ALE)。自适应线谱增强器的功能一般是 分离信号和线谱增强。它包含有一个权系数调整模块,用以实现调节权系数矢量,该模块功能由调整算法来实现,不同的自适应算法具有不同的性能参数,可以根据所应用的条件选择适合的自适应算法。


自适应滤波+ALE算法

function [yn,W,en] = adaptiveFilter_ALE(xn,M,mu,tao,itr)
%自适应滤波器+LMS(Least Mean Squre)算法
%   xn   -->  带噪信号(行向量)
%   M    -->  滤波器阶数(标量)
%   mu   -->  收敛因子(标量)   要求大于0,小于xn的相关矩阵最大特征值的倒数
%   itr  -->  迭代次数(标量)
%   yn   <--  滤波信号(行向量)
%   W    <--  权值矢量(列向量)
%   en   <--  误差(列向量)
% 参数个数必须为4个或5if nargin == 4                 % 4个时递归迭代的次数为xn的长度/nargin函数输入参数数目 
    itr = length(xn);          %最大数组维度的长度
elseif nargin == 5             % 5个时满足M<itr<length(xn)
    if itr>length(xn) || itr<M %||error('迭代次数过大或过小!');
    end
else
    error('请检查输入参数的个数!');
end

% 初始化参数
en = zeros(itr,1);             % 误差序列,en(k)表示第k次迭代时预期输出与实际输入的误差/zero创建全零数组
W  = zeros(itr,M);             % 每一行代表一个加权参量,每一列代表-次迭代,初始为0
yn = xn';

% 迭代计算
for k = (M+tao):length(xn)                  % 第k次迭代
    x = xn(k-tao:-1:k-M-tao+1)';            % 滤波器M个抽头的输入
    yn(k) = W(k-1,:) * x;                % 滤波器的输出
    en(k) = xn(k)-yn(k);                  % 第k次迭代的误差
    if(abs(mean(en(k-10:k)))<1e-6)
        W(k,:) = W(k-1,:);                  % 滤波器权值计算的迭代式
    else
        W(k,:) = W(k-1,:) + 2*mu*en(k)*x';   % 滤波器权值计算的迭代式
    end
end
yn = yn';
end
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38

总结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/210468
推荐阅读
相关标签
  

闽ICP备14008679号