Matlab 变参数服装拟合

Matlab 变参数服装拟合,matlab,Matlab,我正在寻找一种从图表拟合中找到值的方法。我只是想知道在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,对于这个参数,我可以得到数据的最佳拟合。

我正在寻找一种从图表拟合中找到值的方法。我只是想知道在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
,对于这个参数,我可以得到数据的最佳拟合。

用于曲线拟合:

% 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)])

谢谢你的回答,它似乎是对的,但当我使用我的数据做同样的事情时,它会给我这样的错误:{fittype表达式中的错误==>gamma((w+2)。/(w+1))。^(w+1)).*(w+1)。*(x.^exp(-gamma((w+2)。/(w+1))。*x.^(w+1))?输入必须是真实的和完整的。输入中的错误==>fit at 460 errstr=Handleerrrr(errid,errmsg,suppresserr);在11fitObject=fit(s(:),p(:),fitType,'StartPoint',0);}处出现错误==>Untitled。我还更改了f函数以及X和Y名称。