|
如何将以下时域RLS均衡算法换成频域RLS算法呢?
% xn 输入的信号序列 (列向量)
% dn 所期望的响应序列 (列向量)
% M 滤波器的阶数 (标量)
% L 遗忘因子 (标量)
% Return:
% y 实际输出序列 (列向量)
%output h: 估计的fir滤波器系数
%output y: 滤波后输出信号
% function yn=RLS(xn,dn,M,L)
function [en,yn] = RLS(xn,dn,M,L)
iter = length(xn); % 迭代次数
sigma = 0.001;
P = sigma * eye(M,M);
W = zeros(M,1); % 行为权重,列为迭代次数
xn = xn.'; % 转置方便计算
for i = M:iter
u = xn(i:-1:i-M+1); % 滤波器M个抽头输入
pi_ = u.'*P;
k = L + pi_*u;
K = pi_.'/ k;
yn(i) = W.'*u; % 滤波器输出
en(i) = dn(i)-yn(i); % 迭代误差
W = W + K * en(i); % 滤波器权重向量
end
end
|
|