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