2013-10-06 1 views
0

x, y 및 z에 대한 데이터가 제공됩니다. I는 후술하는 바와 같이 함수 형태의 모델로 데이터 세트를 맞추려고 오전 :MATLAB에서 nlinfit 명령

z(x, y) = c0*x^o*y2 + c1*x^1*y^1 + c2 *x^2*y^1 

C0, C1, C2는 계수는 발견되는 곳. nlinfit 함수를 사용하여 해결하려고합니다.

은 지금까지 나는 y 독립 변수와 z는 종속 변수이며, 여기에 x

x= [ 0.001, .. 0.011]; 

y = [1, .. 10]; 

z = [ -.304860225 .. .379710865]; 

my_model= c0 * x^0 * y^2 + c1 * x^1 * y^1 + c2 * x^2 * y^0 

[c0 c1 c2] = [1 2 3]; 

C= nlinfit([x,y], z, @ my_model, [1 2 3]) 

을 시도했습니다. 계수에 대해 이러한 초기 값을 어떻게 설정할 수 있습니까? nlinfit 함수에서 인수를 전달하는 방법을 모르겠습니다. 도움!!!

답변

2

귀하의 모델은 LINEAR w.r.t c0, c1c2입니다. nlfit을 사용할 이유가 없습니다.

xy 데이터에 대해 Vandermonde matrix을 구성하고 백 슬래시를 사용하여 계수를 복구해야합니다.

그것은 모델이 무엇인지 질문에서 100 % 확실하지 않다, 그래서 가정합니다 : nx0, nx1, nx2, ny0, ny1 주어진과-선험적으로 알려진 ny2

z(x,y) = c0 * x^nx0 * y^ny0 + c1 * x^nx1 * y^ny1 + c2 * x^nx2 * y^ny2 

. 당신은 m 포인트를 주어

, 즉는 m -vectors x, yz 그리고 당신은 c0c1c2 주어진 세 가지 m -vectors을 extimate하고 싶습니다. V*c = z 권리 c = [c0; c1; c2]에 대한 :

이 모델의 방데 르몽드 행렬은

V = [ (x(:).^nx0).*(y(:).^ny0), (x(:).^nx1).*(y(:).^ny1), (x(:).^nx2).*(y(:).^ny2) ]; 

지금 모델이 선형이므로주의이다.

는 회신에 대한 c (최소 제곱 의미에서)

c = V \ z 
+0

감사를 복구하려면. 나는 단지 c0, c1, c2의 값을 ramdomly 추가했다. 계수에 대해 이러한 초기 값을 어떻게 설정할 수 있습니까? 비선형 커브 피팅을 수행해야합니다 – Syeda

+0

@Syeda 커브가 비선형 일 수 있지만 피팅은 선형입니다! – Shai

+0

@ Shai .. 그럼, 제 경우에는 nlfit 함수를 사용할 필요가 없습니까? MATLAB에서이 코드를 실행합니다. 왜 내가이 오류가 발생하는지 이해하도록 도와 주시겠습니까? "정의되지 않은 함수 또는 변수 'c0'" – Syeda