1

5個參數我上的曲線擬合問題的工作與以下形式的輸入功能曲線與在Matlab

n=((xi-xa)-a*cos(theta))^2+(h-a*sin(theta))^2; 
d=((xi-xa)+a*cos(theta))^2+(h+a*sin(theta))^2; 
v=k*log(n/d) : Input function 

這裏XA擬合,一個,θ,h和k是參數,我們需要計算v(ⅹⅰ)

情節看起來像這樣 enter image description here

這裏藍點代表觀測值和紅線是從輸入函數而獲得的理論曲線。

這個擬合過程是通過手動改變參數並使用命中和試驗來匹配曲線來完成的。 這可以使用Matlab中的任何優化技術來完成。如果是的話如何?

回答

0

您可以嘗試使用lsqcurvefit(http://nl.mathworks.com/help/optim/ug/lsqcurvefit.html),例如,

function F = myfun(x,xdata) 
    %your parameters xa,a,theta,h,k 
    %map to parameter vector x(1),x(2),x(3),x(4),x(5) 

    n = ((xdata-x(1))-x(2)*cos(x(3)))^2+(x(4)-x(2)*sin(x(3)))^2; 
    d = ((xdata-x(1))+acos(x(3)))^2+(x(4)+asin(x(3)))^2; 
    F = x(5)*log(n/d); 
end 

,並調用求解

x0 = [1;1;1;1;1]; % your guess for starting values of the x vector of parameters 
x = lsqcurvefit(@myfun,x0,xdata,ydata);