how can I fit a composite function
3 次查看(过去 30 天)
显示 更早的评论
I have (x,y) data and i would like to fit the function of parameter(
)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/228156/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/228157/image.png)
with
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/228158/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/228159/image.png)
with
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/228160/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/228161/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/228162/image.png)
How can I do it?
回答(1 个)
Dheeraj Singh
2019-7-24
编辑:Dheeraj Singh
2019-7-24
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
y=linspace(0,200,200);
x=rand(200,1);
%initial values of parameters
params0=rand(6,1);
params=fminsearch(@(params) norm(y-yfunc(params,x)),params0);
For more information on Parameter fitting refer to the following link:
Parameter fitting: https://in.mathworks.com/help/curvefit/parametric-fitting.html
You can also refer to the Curve Fitting Toolbox:
Curve Fitting Toolbox: https://in.mathworks.com/products/curvefitting.html
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Get Started with Curve Fitting Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!