【问题标题】:Curve fitting with 5 parameters in MatlabMatlab中5个参数的曲线拟合
【发布时间】:2015-02-04 12:44:24
【问题描述】:

我正在处理表单输入函数的曲线拟合问题

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,a,theta,h和k是参数,我们需要计算v(xi)

剧情是这样的

这里蓝点代表观测值,红线是输入函数得到的理论曲线。

这个拟合过程是通过手动改变参数并使用命中和试验匹配曲线来完成的。 这可以使用 Matlab 中的任何优化技术来完成吗?如果有怎么办?

【问题讨论】:

    标签: matlab optimization neural-network genetic-algorithm fuzzy-logic


    【解决方案1】:

    您可以尝试使用 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多