我正在寻找一种从图表拟合中找到值的方法。我只是想知道在MATLAB中有可能吗?是否有用于此目的的代码行?
例如:
我有两个矩阵数据如下:
X=[1 2 3 4 5 6 7 8 9]
Y=[9 8 7 6 5 4 3 2 1]
我想用非线性方程(服装合身)拟合这些数据:
a*(w+1)*x^w*exp(a*x^(w+1)) ; a=gamma ((w+2)/(w+1))
但是这个等式有一个变量参数w
。我想MATLAB给我w
,对于这个参数,我可以最适合我的数据。
答案 0 :(得分:0)
使用fit
进行曲线拟合:
% define function as a string
f = 'gamma((w + 2)/(w + 1))*(w + 1)*(x.^w).*exp( gamma((w + 2)/(w + 1))*x.^(w + 1) )';
X = [1 2 3 4 5 6 7 8 9];
Y = [9 8 7 6 5 4 3 2 1];
% define fit parameters
fitType = fittype( f, 'Independent', 'x' ,'coefficients',{'w'});
% fit data
fitobject = fit(X(:),Y(:),fitType,'StartPoint', 0);
% coefficient value
w = coeffvalues(fitobject)
% plot
plot(X,Y,'.');
hold on
plot(fitobject);
title(['w = ' num2str(w)])