MATLAB Answers


how can I fit a composite function

Asked by Edoardo Vicentini on 9 Jul 2019
Latest activity Edited by Dheeraj Singh on 24 Jul 2019
I have (x,y) data and i would like to fit the function of parameter()
How can I do it?

  1 Comment

on 9 Jul 2019
Have a read here and here. It will greatly improve your chances of getting an answer.
What have you tried so far? Can you provide a realistic sample of data so we can show how different fitting methods perform?

Sign in to comment.

1 Answer

Answer by Dheeraj Singh on 24 Jul 2019
Edited by Dheeraj Singh on 24 Jul 2019

There are many ways of fitting parameters to the data.
Firstly, you can form the equations in the following manner:
z= @(x0,w,x) (x-x0)/w;
X= @(x0,w,m,x) 1-z(x0,w,x).^2+m^2;
r= @(x0,w,m,x) sqrt(X(x0,w,m,x).^2+4*z(x0,w,x).^2);
S1= @(a0,x0,w,m,x) (1- a0*sqrt(r(x0,w,m,x)+X(x0,w,m,x))./r(x0,w,m,x));
S2= @(a0,x0,w,m,x) a0.*(-z(x0,w,x).*sqrt(r(x0,w,m,x)+X(x0,w,m,x))+sign(z(x0,w,x)).*sqrt(r(x0,w,m,x)-X(x0,w,m,x)))./(m*r(x0,w,m,x));
yfunc= @(params,x) params(1)*S1(params(3),params(4),params(5),params(6),x) + params(2)*S2(params(3),params(4),params(5),params(6),x);
For fitting the parameters, you can do in the following manner depending upon your data:
%size of x and y =200
%initial values of parameters
params=fminsearch(@(params) norm(y-yfunc(params,x)),params0);
For more information on Parameter fitting refer to the following link:
You can also refer to the Curve Fitting Toolbox:


Sign in to comment.