Borrar filtros
Borrar filtros

Least Squares Regression, Help me find the error in my code!

1 visualización (últimos 30 días)
SB
SB el 26 de Oct. de 2012
Suppose the curve you're fitting can follow the form
y = an*x^n+ an-1*x^(n-1)+...+ a1x + a0
x and y are two column vectors of the same size and n is the degree of the polynomial. A is an array of the coefficients, in the order from an to a0.
Solve for A, and the e, the array of the residuals.
Here's what I have: function [A,e] = MyPolyRegressor(x, y, n)
for i= 1:n
x(i)=x.^(n-1);
end;
A=x/y;
e=A*x-y;
Whenever I run it, it says, "In an assignment A(I) = B, the number of elements in B and I must be the same." Please help!

Respuestas (2)

Matt J
Matt J el 26 de Oct. de 2012
Editada: Matt J el 26 de Oct. de 2012
In
x(i)=x.^(n-1);
the left hand side is a scalar location and the right hand side is not a scalar. So there's no room for it. I don't really understand why you're trying to overwrite x with powers of itself like x.^(n-1).
You should consider the VANDER command. I'm assuming you're not allowed to use POLYFIT.
  3 comentarios
SB
SB el 26 de Oct. de 2012
I'd try that, but I'm trying to avoid using any commands beyond basic array ones. I was thinking something like
for i = 1:n
b(i) = x(i)^(n-i) ;
end
A=b\y';
e=A*b-y;
I can't quite get the answer though.
Matt J
Matt J el 26 de Oct. de 2012
Editada: Matt J el 26 de Oct. de 2012
b=ones(length(x),n+1);
for i = 0:n-1
b(:,i+1) = x(:).^(n-i) ;
end

Iniciar sesión para comentar.


Azzi Abdelmalek
Azzi Abdelmalek el 26 de Oct. de 2012
There is a problem in your x array size, it should be a matrix (nxm) where m is the length of y and m is the lenngth of unknown variables
  1 comentario
SB
SB el 26 de Oct. de 2012
I fixed that in my current code (shouldve been b*A rather than A*b), but I'm still getting the wrong answer ( the correct answer and my new code is posted above).

Iniciar sesión para comentar.

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by