Nonlinear data fitting using lsqnonlin for multiple variables

조회 수: 52 (최근 30일)
Zaheer Shariff
Zaheer Shariff 2019년 6월 19일
댓글: Matt J 2019년 6월 20일
Hello I am trying to fit multiple variables with multiple parameters and objective functions to experimental data using lsqnonlin function and I am having difficulty to generalize the code for this.
For example consider x1, x2, x3 and x4 as the 4 variables that I want to fit. The input data/parameters is a matrix 10x2 where each column is a independent variable a and b having 10 data points corresponding to the output data Y. further I have 2 objective functions f1 and f2.
The first 5 datapoints correspond to the output with respect to variables x1 x2 and their objective function f1. The next 5 data points correspond to the output with respect to variables x3 x4 and their objective function f2 as below
f1 = (x1 + x2*a(1:5) + b*x2(1:5)^3) - y(1:5)
f2 = (x3 + x4*a(5:10) + x4*b(5:10)^2) - y(5:10)
The number of variables, parameters and functions in this expample is just for explanation and in practice may be more.
Kindly suggest how I can generalize to code to accept multiple variables, parameters and functions.Also the function above is hypothetical, so you may use a different function in your answers
Thank you
  댓글 수: 1
Matt J
Matt J 2019년 6월 19일
편집: Matt J 2019년 6월 19일
In your example, f1 and f2 don't share any unknown parameters. Therefore, there is no need to fit them jointly. You could run lsqnonlin once to fit f1 and a second time to fit f2.

댓글을 달려면 로그인하십시오.

채택된 답변

Matt J
Matt J 2019년 6월 19일
편집: Matt J 2019년 6월 19일
There's nothing special involved,
a=___
b=___
y=___
x0=___
xlsq =lsqnonlin(@(x) modelfun(x,a,b,y), x0)
function F=modelfun(x,a,b,y)
f1 = (x(1) + x(2)*a(1:5) + x(2)*b(1:5)^3) - y(1:5);
f2 = (x(3) + x(4)*a(5:10) + x(4)*b(5:10)^2) - y(5:10);
F=[f1,f2];
end
  댓글 수: 6
Zaheer Shariff
Zaheer Shariff 2019년 6월 20일
thank you. I will try it out.
Matt J
Matt J 2019년 6월 20일
You're welcome, but please Accept-click the answer if it addressed your question.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Fit Postprocessing에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by