2014-03-30 2 views
1

비선형 함수에 최소 정사각형으로 데이터를 맞추는 데 도움이 필요합니다. 데이터가 주어지면 다음 방정식이있을 때 어떻게 진행합니까?비선형 방정식에 최소한 정사각형으로 데이터 피팅

F (x)는 20 = AX + B + E *^(c *의 2 배)

그래서 I는 A, B 및 C 찾을. 그것이 제품이라면 함수 전체에 자연 로그를 적용하여 함수를 선형화 할 것이지만이 경우에는 그렇게 할 수 없습니다.

감사

답변

2

당신은 곡선 피팅 도구 상자가 필요하지 않습니다 nlinfit 도구 (나는 생각하지 않는다를 ...)

뭔가

f = @(b,x)(20 + b(1)*x + b(2)*exp(b(3)*2*x)); 
beta0 = [1, 1, 1]; 
beta = nlinfit(x, Y, f, beta0); 

등을 사용할 수 있습니다 문제가 발생하면 계수를 벡터 b의 익명 함수 f에 전달합니다. nlinfitbeta 벡터에서 이러한 계수의 최종 값을 반환합니다. beta0b(1), b(2)b(3)의 초기 추측입니다. xY은 원하는 데이터가있는 벡터입니다.

또는 조금 더 복잡한 경우 자체 파일에서 함수를 정의 할 수 있습니다. 이 경우를 들어, 당신은 또한

beta0 = [1, 1, 1]; 
beta = nlinfit(x, Y, @my_function, beta0); 

참조 같을 것이다

function y = my_function(b,x) 
y = 20 + b(1)*x + b(2)*exp(b(3)*2*x); 
end 

및 코드의 나머지 부분 (파일 my_function.m에서) 뭔가를 할 것이다 : Using nlinfit in Matlab?

+0

감사합니다! 이것은 많은 도움이되었습니다! – user3342830

+0

@ user3342830 안녕하세요! 나는 이것이 도움이 되었기 때문에 기쁩니다 :-)이 질문에 답을 얻은 경우 화살표 아래의 녹색 체크 표시를 클릭하여이 대답의 [acceptance] (http://stackoverflow.com/help/accepted-answer)를 표시 할 수 있습니까? ? – darthbith

1

당신은 피팅 데이터에 대한 대화 형 도구입니다 cftool을 시도 할 수 있습니다. 내가 이해하지 못하는 두 번째 부분. 보다 자세하게 설명하면 도움이 될 수 있습니다. MATLAB이 최소 제곱를 해결하면

관련 문제