MATLAB: Lsqcurvefit question (Function value and YDATA sizes are not equal.)

lsqcurvefit

I am new to MATLAB. I want to do a curve fitting to get coefficent. But there is some problem. It said Function value and YDATA sizes are not equal. Where did i do mistake…? Thanks for help.
xdata=[1,5,10,20,50];
ydata=[0.3, 1.6, 2.8, 4.6, 7.6];
fun=@(x,xdata)x(1)*1-x(1)*(1-exp(((-1)*x(2))*xdata))/(x(2)*xdata);
x0=[10,5];
x=lsqcurvefit(fun,x0,xdata,ydata);
Function value and YDATA sizes are not equal.

Best Answer

Hi,
Use elementwise operations to declare your function:
xdata=[1,5,10,20,50];
ydata=[0.3, 1.6, 2.8, 4.6, 7.6];
fun=@(x,xdata)x(1).*1-x(1).*(1-exp(((-1).*x(2)).*xdata))./(x(2).*xdata);
x0=[10,5];
x=lsqcurvefit(fun,x0,xdata,ydata);
This version works.
Best regards
Stephan