Non-linear curvefitting in MATLAB

3 ビュー (過去 30 日間)
Syeda
Syeda 2013 年 10 月 8 日
コメント済み: Syeda 2013 年 10 月 9 日
Hey guys! I'm some given some huge set of data. I am trying to fit a set of data into a model of functional form as described below:
z(x, y) = c0. * x^0 * y^2 + c1. * x^1 * y^1 + c2. * x^2 *y^1
where c0, c1, c2 are the coefficients to be found.
My attempt is to use the nlinfit function to solve it.
So far I have tried:
% i have just added a small portion of my data
a= [ 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001, 0.001,0.011, 0.011, 0.011, 0.011, 0.011, 0.011, 0.011, 0.011, 0.011, 0.011];
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
y = x.* a;
z = [ -.304860225, .170315374, .343019354, .370114906, .373180536, .36719579, .363397853, .363417755, .366962504, .379710865, -.304860225, .170315374, .343019354, .370114906, .373180536, .36719579, .363397853, .363417755, .366962504, .379710865];
model= c0.* (x(:).^0).* (y(:).^2) + c1.* (x(:).^1).* (y(:).^1) + c2.* (x(:).^2).* (y(:).^0)
[c0 c1 c2] = [0.001 0.007 0.788]
C= nlinfit( [x,y], z, 'model', [0.001 0.007 0.788])
% Here x,y are independent variables and z is dependent variable.
How can one set these initial values for the coefficients? I'm not getting how to pass the arguments. I'm getting this error "??? Undefined function or variable 'c0' ". Please help!!!
Thanks in advance, Syeda

採用された回答

Greg Heath
Greg Heath 2013 年 10 月 9 日
The solution is trivial because you have a linear system of equations for the 3 coefficients
A*c = b;
c = A\b
Hope this helps
Thank you for formally accepting my answer
Greg
  3 件のコメント
Matt J
Matt J 2013 年 10 月 9 日
編集済み: Matt J 2013 年 10 月 9 日
It's really not ideal to fit polynomials bluntly using backslash. That's why MATLAB offers the more robust POLYFIT and why the File Exchange offers a variety of polynomial fitters.
Syeda
Syeda 2013 年 10 月 9 日
yes!! My results are not accurate by using this method.

サインインしてコメントする。

その他の回答 (1 件)

Matt J
Matt J 2013 年 10 月 8 日
Using a nonlinear solver for a linear fitting problem seems like the wrong way to go. A better option might be
  10 件のコメント
Matt J
Matt J 2013 年 10 月 8 日
Dunno. Instead of 'x^2*y' maybe you should try either 'x*x*y' or 'y*x^2'.
Syeda
Syeda 2013 年 10 月 9 日
No, it still gives error.
??? Undefined function or method 'polyfitn' for input arguments of type 'cell'

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeGet Started with Curve Fitting Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by