blob: 666b65c64fcc3c5d64789a20b5f8b877a079b360 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
% linreg.m
% David Rowe April 2015
%
% Based on:
% http://stackoverflow.com/questions/5083465/fast-efficient-least-squares-fit-algorithm-in-c
%
% finds y = mx + b to best fit n points x and y
function [m b] = linreg(x,y,n)
sumx = 0.0; % sum of x
sumx2 = 0.0; % sum of x^2
sumxy = 0.0; % sum of x * y
sumy = 0.0; % sum of y
sumy2 = 0.0; % sum of y**2
for i=1:n
sumx += x(i);
sumx2 += x(i)^2;
sumxy += x(i) * y(i);
sumy += y(i);
sumy2 += y(i)^2;
end
denom = (n * sumx2 - sumx*sumx);
if denom == 0
% singular matrix. can't solve the problem.
m = 0;
b = 0;
else
m = (n * sumxy - sumx * sumy) / denom;
b = (sumy * sumx2 - sumx * sumxy) / denom;
end
endfunction
|