diff --git a/recursiveLSQ.m b/recursiveLSQ.m new file mode 100644 index 0000000000000000000000000000000000000000..2f320d50eaa8c8d091d61fc0f0eb66403c6dd63a --- /dev/null +++ b/recursiveLSQ.m @@ -0,0 +1,13 @@ +function [theta, p] = recursiveLSQ(phi, y, lambda0, alpha) + p = zeros(size(phi)); + p(1, :) = reshape(pinv(sum(alpha * phi .* phi)), [], size(phi, 2)); + theta = zeros(size(phi)); + theta(1, :) = p(1) .* sum(alpha * phi .* y, 1); + lambda = zeros(size(phi, 1), 1); + lambda(1) = lambda0; + for t = 2:size(phi, 1) + lambda(t) = lambda0 * lambda(t-1) + 1 - lambda0; + p(t, :) = 1/lambda(t) * (p(t-1, :) - (p(t-1, :) .* phi(t, :) .* phi(t, :) .* p(t-1, :))./((lambda(t)/alpha)+phi(t, :) .* p(t-1, :) .* phi(t, :))); + theta(t, :) = theta(t-1, :) + alpha * p(t, :) .* phi(t, :) .* (y(t)-phi(t, :) .* theta(t-1, :)); + end +end \ No newline at end of file