Solving a system of nonlinear equations
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
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).
댓글 수: 0
답변 (1개)
  Matt J
      
      
 2015년 7월 28일
        
      편집: Matt J
      
      
 2015년 7월 28일
  
      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
  Matt J
      
      
 2015년 7월 29일
				See if omitting the line
   A=bsxfun(@minus,A,mean(A,1));
makes a difference.
참고 항목
카테고리
				Help Center 및 File Exchange에서 Numerical Integration and Differential Equations에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

