calculate_rls_mvdr.m
来自「implement basic routines in Matlab and O」· M 代码 · 共 29 行
M
29 行
% RLS Algorithm - From P.756 of Optimum Array Processing
function [w_rls, R_inv] = calculate_rls_mvdr(s, r, eta)
numIterations = size(r, 2);
N = size(r,1);
w_rls = zeros(N, numIterations);
w_rls(:,1) = s/(norm(s)^2);
R_inv = eye(N) / eta;
R_inv_last = R_inv;
Lambda = 1/(s'*R_inv*s);
Lambda_last = 1/(s'*R_inv*s);
mu = 1;
for i = 2:numIterations
R_inv = R_inv_last - (R_inv_last*r(:, i)*r(:, i)'*R_inv_last)/(1+r(:, i)'*R_inv_last*r(:, i));
Lambda = 1/(s'*R_inv*s);
G = (R_inv_last*r(:, i))/(1+r(:, i)'*R_inv_last*r(:, i));
Y = w_rls(:,i-1)'*r(:, i);
w_rls(:,i) = (Lambda/Lambda_last)*(w_rls(:,i-1)-G*Y');
Lambda_last = Lambda;
R_inv_last = R_inv;
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?