如何为矩阵实现 RLS

信息处理 matlab 过滤器 线性系统 有限脉冲响应 优化
2022-01-31 23:58:37

我需要实现 RLS 算法,但它是用于矩阵而不是向量,我已经制作了下面的代码,但仍然有问题无法正常工作,

编辑:

代码应该如下完成,

但是如果是向量,并且是标量,我们如何处理g(:,n)=P*colo*((lamda + colo'*P*colo).^-1);这个符号是有效的,但是现在我们有是矩阵并且是向量。Hy(n)Hy(n)

    clear all; clc;
N = 1000;                    %% Number of samples
H = randn(64,31);           %% The input matrix 
c1 = randn(31,1);           %% The outpu desired vector; 
p = length(H); 
g1 = zeros(p,1);            %% initial RLS weight; 
lamda=1; 
sigma=1; 
P=(sigma^-1)*eye(p);

for n = 1 : N 
    y(:,n) = H'*g1; 
    alpha(:,n) = c1(:,n) - y(:,n);                     % Instantaneous error of RLS
    g(:,n)=P*colo*((lamda + H'*P*H).^-1);   % Gain vector
    P=(lamda^-1)*P - g(:,n)*H'*(lamda^-1)*P;    % RLS intermediate term
    g1 = g1 + alpha(n)*g(:,n);              % Weight update rule of RLS
end

H如您所知,当我上面的代码中的输入数据是向量时,正常的 RLS 算法正在工作。所以它将更新循环如下:

for n = 1 : N 
    y(n) = H'*g1; 
    alpha(n) = c1(n) - y(n);                     % Instantaneous error of RLS
    g(:,n)=P*colo*((lamda + H'*P*H).^-1);   % Gain vector
    P=(lamda^-1)*P - g(:,n)*H'*(lamda^-1)*P;    % RLS intermediate term
    g1 = g1 + alpha(n)*g(:,n);              % Weight update rule of RLS
end

这将正常工作y(n),并且alpha在这种情况下将是标量。但就我而言,这将是向量。我想,也许我们可以将矩阵 H 转换为向量,然后在完成循环后将其转换回矩阵?但我不确定,我不知道该怎么做,这只是一个意见。

非常感谢您的帮助。我真的需要理解这一点。

谢谢

0个回答
没有发现任何回复~