lsqcurvefit question (Function value and YDATA sizes are not equal.)

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.

 採用された回答

Stephan
Stephan 2018 年 7 月 25 日

1 投票

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

その他の回答 (1 件)

カテゴリ

タグ

質問済み:

2018 年 7 月 25 日

回答済み:

2018 年 7 月 25 日

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by