multi-variable-parametric data fitting
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
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?
1 Kommentar
Antworten (1)
Matt J
am 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
1 Kommentar
Siehe auch
Kategorien
Mehr zu Get Started with Curve Fitting Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!