提出原因:因为语音信号是非平稳、强相关的信号,NLMS算法在处理此类信号时,反馈抑制的性能和稳定性较差,为了克服输入信号相关性的影响,有学者提出了仿射投影算法(APA),APA是NLMS算法的多维推广,重复使用输入信号,在输入数据具有强相关性的情况下提高算法的收敛速度。与LMS算法一样,需要选择合适的步长来取得收敛速度和稳态误差之间的折中。(变步长的APA算法可以解决这个问题)。具体的算法过程公式就不打啦~
LMS算法是点式更新,计算简单收敛性差;仿射投影是数据块更新。块更新比点更新使用更多的数据,利用的信息多,可以提高滤波器的收敛性能。使用的数据越多,性能提高越大。
评价仿射投影自适应滤波器的主要指标:收敛速度、稳态失调、对回声信道跟踪能力和抗环境噪声能力。
function [yn,er,wk] = myAPA(xn,dn,L,M,miu)
% APA算法的函数
% xn为输入序列
% dn为期望信号
% L为重复次数
% M为滤波器阶数
% miu是步长因子
dn=dn(:)';
N=length(xn);
yn=zeros(1,N)';
wk=zeros(M,N);
er=inf*zeros(1,N);
A=zeros(M,L);
for k=L+M-1:N
for i=1:M
for j=1:L
A(i,j)=xn(k-L-M+i+j);
end
end
yn(k-L+1:k)=A'*wk(:,k); % n时刻,前L个输出组成的输出参考向量
D=dn(k-L+1:k)'; % n时刻,前L个期望输出信号组成参考向量
E=D-yn(k-L+1:k); % 后验误差
er(k-L+1:k)=D-yn(k-L+1:k);
wk(:,k+1)=wk(:,k)+miu*A*pinv(A'*A)*E; % 更新滤波器权系数
end
仿真过程用高斯白噪声通过一阶AR模型通过高斯白噪声作为输入。
一只摸鱼小白的日常