2017-05-05 82 views
0

我正在尋找一種方法從圖表適合找到一個值。我只是想知道這是可能的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

使用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)]) 

enter image description here

+0

謝謝你的答案,這似乎是正確的,但是當我用我的數據做同樣的它給我的錯誤,如:{ ((w + 2)./(w + 1))。^(w + 1))。*(w + 1)。*(x。^ w)。* exp( (((w + 2)./(w + 1))。^(w + 1))。* x。^(w + 1)) ???輸入必須真實且完整。 Error in>> fit at 460 errstr = handleerr(errid,errmsg,suppresserr); 錯誤在==>無標題在11 fitobject = fit(s(:),p(:),fitType,'StartPoint',0);}。我也改變f函數和X和Y的名字。 – Paris