2017-05-30 73 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'限制等屬性。 –