Curve fitting example 1
Contents
find speed: fit data with linear function y = c1*1 + c2*t
We assume a car is driving with constant speed. In order to find the speed we measure the position y at four t-values.
% given data: t = [0;1;2;3]; % t-values y = [1;1;2;4]; % y-values data = [t,y] % table of given t and y values plot(t,y,'o') % plot given data points xlabel('t');ylabel('y') grid on; axis equal; title('given data points') A = [t.^0,t] % matrix A
data = 0 1 1 1 2 2 3 4 A = 1 0 1 1 1 2 1 3

Solve normal equations
The normal equations are a 2 by 2 linear system.
Result: The best least squares fit is y = 0.5 + 1*t, so the estimated speed is 1.
M = A'*A g = A'*y c = M\g tp = (-0.4:.1:3.4)'; % t-values for plotting curve yp = [tp.^0,tp]*c; % y-values for fitted curve plot(t,y,'o',tp,yp) % plot data points together with fitted curve xlabel('t');ylabel('y') grid on; axis equal; title('given data points with fitted curve')
M = 4 6 6 14 g = 8 17 c = 0.5000 1.0000

Check residual vector
Find the norm of the residual vector r. Check that r is really orthogonal on the columns of the matrix A.
r = A*c - y % residual vector norm_r = norm(r) % norm A'*r % dot product of columns of A with r
r = -0.5000 0.5000 0.5000 -0.5000 norm_r = 1 ans = 0 0