multi-variable-parametric data fitting
3 views (last 30 days)
Show older comments
Hello,
I try to fit the following polynomial to a set of data:
myfun =fittype(@(a,b,c,d,e,f,x,y) y.^3-a*x*y.^2-b*y.^2+c*y*x.^2+d*x*y+e*y-f*x, 'ind', {'x' 'y'},'dep','z')
After I ask matlab to fit the function to my data:
myfit = fit([data(:,1),data(:,2)],z,myfun)
I get the following error.
Warning: Start point not provided, choosing random start point.
> In Warning>Warning.throw at 31
In fit>iFit at 320
In fit at 109
Error using fit>iFit (line 415)
Error while trying to evaluate FITTYPE function :
Inner matrix dimensions must agree.
Error in fit (line 109)
[fitobj, goodness, output, convmsg] = iFit( xdatain, ydatain, fittypeobj, ...
Caused by:
Failure in initial user-supplied objective function evaluation. LSQCURVEFIT cannot continue.
What I am doing wrong? data is a matrix of 25x2. which my x is the first column and y is the second. z is defined as
z=zeros(25,1);
Which simply means the coefficients should be obtained in a way to get a flat surface... Any idea why I get such error?
Answers (1)
Matt J
on 10 Sep 2014
Make sure all operations are elementwise,
>> fun=@(a,b,c,d,e,f,x,y) y.^3-a*x*y.^2-b*y.^2+c*y*x.^2+d*x*y+e*y-f*x;
>> vectorize(fun)
ans =
@(a,b,c,d,e,f,x,y)y.^3-a.*x.*y.^2-b.*y.^2+c.*y.*x.^2+d.*x.*y+e.*y-f.*x
See Also
Categories
Find more on Get Started with Curve Fitting Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!