Hola,
Aunque Matlab ya tiene la función 'polyfit', he escrito la mía propia para resolver un problema de cuadrados mínimos de tipo discreto, por si alguien lo quiere probar o aconsejarme algo.
function []=a49(x,y,n)
% El polinomio de ajuste es de grado <= n
vx=zeros(length(x),1);
vy=vx;
for i=1:length(x)
vx(i)=x(i);
vy(i)=y(i);
end
x=vx;
y=vy;
A=zeros(n+1);
b=zeros(n+1,1);
for i=0:n
for j=i:n
A(i+1,j+1)=(x.^i)'*x.^j;
end
b(i+1)=(x.^i)'*y;
end
A=A+triu(A,1)';
u=A\b;
ccs=zeros(n+1,1);
for j=1:n+1
ccs(j)=u(n+2-j);
end
disp(ccs)
x1=linspace(min(x),max(x),1e3);
y1=polyval(ccs,x1);
close(figure(1))
figure(1)
hold on
plot(x,y,'rp')
plot(x1,y1,'b')
axis equal
% x=[2 4 6 8]; y=[2 11 28 40]; n=1;
% x=rand(4,1); y=rand(4,1); a49(x,y,length(x-1))