% Illustration of linear least squares.
function main()
% KSmrq's colors
red = [0.867 0.06 0.14];
blue = [0, 129, 205]/256;
green = [0 100 0]/256;
green=[0 139 0]/256;
yellow = [254, 194, 0]/256;
white = 0.99*[1, 1, 1];
gray = 0.1*white;
Xr = [1, 2, 3, 4];
Yr = round(1+1.5*Xr+4*rand(1, 4))
%Yr = [9 13 15 14];
Yr = [6 5 7 10];
A = min(Xr)-1; B = max(Xr)+1;
C = min(Yr)-1; D = max(Yr)+1;
N = 100;
small = 0.2;
X = linspace(A, B, N);
% least squares fitting
Yr = Yr';
Xr=Xr';
Mat = [(0*Xr+1) Xr];
V=Mat'*Yr;
V
Mat
V=(Mat'*Mat)\V;
pe = V(1); qe = V(2);
V
% Set up the figure
lw = 5; % linewidth
lw2 = lw/2;
fs = 22; % font size
figure(1); clf; hold on;
set(gca, 'fontsize', fs);
set(gca, 'linewidth', lw2)
hold on; grid on;
axis equal;
grid off;
for i=1:length(Xr)
plot([Xr(i), Xr(i)], [Yr(i) pe+qe*Xr(i)], 'color', green, 'linewidth', 0.95*lw);
end
myrad = 0.12;
for i=1:length(Xr)
ball(Xr(i), Yr(i), myrad, red);
end
plot(X, pe+qe*X, 'b', 'linewidth', lw);
set(gca, 'GridLineStyle', '-', 'xcolor', gray);
set(gca, 'GridLineStyle', '-', 'ycolor', gray);
set(gca, 'XTick', A:1:B);
set(gca, 'YTick', C:1:D);
Yr - (pe+qe*Xr)
axis equal;
axis([A B C D]);
saveas(gcf, 'Linear_least_squares_example.eps', 'psc2'); % save as eps
function ball(x, y, r, color)
Theta=0:0.1:2*pi;
X=r*cos(Theta)+x;
Y=r*sin(Theta)+y;
H=fill(X, Y, color);
set(H, 'EdgeColor', 'none')