Non-linear curvefitting in MATLAB
3 次查看(过去 30 天)
显示 更早的评论
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
0 个评论
采纳的回答
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 个评论
更多回答(1 个)
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 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Curve Fitting Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!