Solving a system of nonlinear equations

8 vues (au cours des 30 derniers jours)
AP
AP le 28 Juil 2015
Commenté : Matt J le 29 Juil 2015
I have about 1000 measurement which relates three variables to each other: x, y, and z. In other words, I have 1000 measurement values for x, y, and z. The relationship among them is as follows:
Could someone kindly tell me how I can find the coefficients c1, c2, and c3 using MATLAB? If there were no interaction between x and y (c3=0), then c1 and c2 could be easily found by the backslash operator in MATLAB in a least square way (A\b).

Réponses (1)

Matt J
Matt J le 28 Juil 2015
Modifié(e) : Matt J le 28 Juil 2015
If there were no interaction between x and y (c3=0), then c1 and c2 could be easily found by the backslash operator in MATLAB in a least square way (A\b)
Backslash should still work for least squares estimation,
x=x(:); y=y(:); z=z(:);
c = [x,y,x.*y].\z; %c=[c1;c2;c3]
although, if you have measurement noise in x and y (regardless of c3=0), some would say you should be using total least squares instead of ordinary least squares,
x=x(:); y=y(:); z=z(:);
A=[x,y,x.*y,-z];
A=bsxfun(@minus,A,mean(A,1));
[~,~,V]=svd(A,0);
c=V(1:end-1,end)./V(end);
  2 commentaires
AP
AP le 28 Juil 2015
Thanks. The second method (for noise), using bsxfun, yields strange results for the coefficients.
Matt J
Matt J le 29 Juil 2015
See if omitting the line
A=bsxfun(@minus,A,mean(A,1));
makes a difference.

Connectez-vous pour commenter.

Catégories

En savoir plus sur Systems of Nonlinear Equations dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by