lsqcurvefit error Too many input arguments.
3 views (last 30 days)
Show older comments
I'm trying to use lsqcurvefit to find the best parameters b and k that minimize the error between the experimental and numerical solution, when I run this function I get the error.
Error using ex1>@(bk)T0/J2-(bk(1)/J2).*y(:,4)-((bk(2)/J2).*(y(:,2)-y(:,1))). Too many input arguments.
How can I get lsqcurvefit to run with my fun?
T = load('samples.txt');
xdata = T(:,1);
y2data = T(:,3);
findbk = @(t,y,b,k) [y(3);y(4);k/J1 * y(2) - k/J1 * y(1);T0/J2 - b*y(4)/J2 - (k/J2)*(y(2)-y(1))]; %ode i need to integrate
[t,y] = ode45(@(t,y) findbk(t,y,1,2),[0:0.01:10],[0,0,0,0]); % integrate ode y (1 and 2 are guesses of b and k)
fun = @(bk) T0/J2 - (bk(1)/J2).*y(:,4) - ((bk(2)/J2).*(y(:,2)-y(:,1))); %define function with b and k uknown
X = lsqcurvefit(fun,[0,0],xdata,y2data);
3 Comments
Clara Casado-Coterillo
on 23 Oct 2023
I do not understand the relation of the answer with the question.
I have the same problem with lsqcurvefit.
if I define the local function first
as local_fun = @(x,xdata)fun(x0,xdata,parm1,param2,parm3,ymaxVector);
and then introduce this into
[x,resn,error,jacobian]=lsqcurvefit(local_fun,x0,xdata,ydata,[],[],options)
it returns x = x0 (previously optimized using PSO or given as data);
if I introduce directly the function :
[x,resn,error,jacobian]=lsqcurvefit(@fun,x0,xdata,ydata,[],[],options,parm1,param2,parm3,ymaxVector);
it returns:
FUN must have two input arguments.
if I introduce the function in lsqcurvefit as:
[x,resn,error,jacobian]=lsqcurvefit(@(x,xdata)fun(x,xdata,ydata,parm1,param2,parm3,ymaxVector),x0,xdata,ydata,[],[],options)
it returns:
Too many input arguments.
i do not know what to try next.
Walter Roberson
on 23 Oct 2023
local_fun = @(x,xdata)fun(x0,xdata,parm1,param2,parm3,ymaxVector);
6 parameters passed. Third parameter is parm1
[x,resn,error,jacobian]=lsqcurvefit(@(x,xdata)fun(x,xdata,ydata,parm1,param2,parm3,ymaxVector),x0,xdata,ydata,[],[],options)
7 parameters passed. Third parameter is ydata, and parm1 is the 4th parameter.
Answers (0)
See Also
Categories
Find more on Ordinary Differential Equations 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!