% Illustration of linear least squares.
function main()
% KSmrq's colors
red = [0.867 0.06 0.14];
blue = [0, 129, 205]/256;
green = [0, 200, 70]/256;
yellow = [254, 194, 0]/256;
white = 0.99*[1, 1, 1];
gray = 0.1*white;
% Set up the grid and other parameters
Xr = [-1, 0, 2, 4];
Yr = [3 6 8 9];
N = 100;
small = 0.2;
X = linspace(min(Xr)-4*small, max(Xr)+4*small, N);
C=-4; D = 4;
% 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;
% random numbers
s=0.16;
a = 1.2; b = 3; c = 1;
p = 1; q = 6.5; r = 1.3;
M = 50;
p = s*p; q = s*q; r = s*r;
myrad = 0.1;
for i=1:length(Xr)
ball(Xr(i), Yr(i), myrad, red);
end
axis equal;
% least squares fitting
Yr = Yr';
Xr=Xr';
Mat = [(0*Xr+1) Xr];
V=Mat'*Yr;
V=(Mat'*Mat)\V;
pe = V(1); qe = V(2);
plot(X, pe+qe*X, 'b', 'linewidth', lw);
grid on;
set(gca, 'GridLineStyle', '-', 'xcolor', gray);
set(gca, 'GridLineStyle', '-', 'ycolor', gray);
set(gca, 'XTick', min(Xr):1:max(Xr));
axis equal;
axis([min(Xr)-2*small max(Xr)+2*small min(Yr)-2*small max(Yr)+4*small]);
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')