2017-05-30 72 views
2

我有两组数据:y和x。对于exampe拟合Powerlaw指数数据matlab

y=[5,4,2,1,3,4,...]; 
x=[1,2,3,4,5,6,...]; 

我想,以适应他们下面的功能,找到系数A,B,C,A0,B0,C0,A1,B1和C1。 我该怎么做? 功能是:

y= a x^b exp(-x/c) 

和:

y= a0 x^b0 exp(-x/c0)+ a1 x^b1 exp(-x/c1). 

回答

1
foo_fit = fittype('a*x^b*exp(-x/c)',... 
        'dependent',{'y'},'independent',{'x'},... 
        'coefficients',{'a','b','c'}); 
res = fit(x',y',foo_fit); 

您还可以指定一个递归n作为problem参数fittype(这样你就不必明确说明每个系数(C0 ,c1,...,cn))但我不确定如何/如果可能的话

+0

重要提示:这需要曲线拟合工具箱。其他工具箱也可以执行这种类型的回归,但没有一个能够让它变得如此简单。 –

+0

它给出了警告:警告:未提供起点,选择随机起点。 –

+0

您可以在'fit()'函数(https://www.mathworks.com/help/curvefit/fit.html#namevaluepairarguments)中指定'StartPoint','Lower' /'Upper'限制等属性。 –