文档

优化曲线拟合

这个例子展示了如何将非线性函数拟合到数据上。对于这个例子,非线性函数是标准的指数衰减曲线

y t 一个 经验值 - λ t

在哪里 y t 响应是否及时 t , 一个 λ 是要匹配的参数。拟合曲线意味着寻找参数 一个 λ 使误差平方和最小化

1 n y - 一个 经验值 - λ t 2

时代在哪里 t 答案是 y 1 ... n .误差平方和是目标函数。

创建示例数据

通常,你会从测量中获得数据。对于本例,创建基于模型的人工数据 一个 4 0 λ 0 5 ,具有正态分布伪随机误差。

rng默认的%的再现性tdata = 0:0.1:10;Ydata = 40*exp(-0.5*tdata) + randn(size(tdata))); / /输出

写目标函数

编写一个接受参数的函数一个λ和数据tdataydata,并返回模型的误差平方和 y t .将所有变量进行优化(一个λ)在单个向量变量(x).有关更多信息,请参见多变量最小函数

类型sseval
函数sse = sseval(x,tdata,ydata);λ= x (2);sse = sum((ydata - A*exp(-lambda*tdata)).^2);

将这个目标函数保存为一个名为sseval.m在您的MATLAB®路径。

fminsearch求解器适用于单变量函数,x.然而,sseval函数有三个变量。额外的变量tdataydata不是要优化的变量,而是要优化的数据。定义的目标函数fminsearch作为…的函数x独自一人:

有趣= @ (x) sseval (x, tdata ydata);

获取关于包含额外参数的信息,例如tdataydata,请参阅参数化功能

寻找最佳拟合参数

从一组随机的正参数开始x0,并fminsearch找出最小化目标函数的参数。

x0 =兰德(2,1);x0, bestx = fminsearch(有趣)
bestx =2×140.6877 - 0.4984

结果bestx与生成数据的参数相当接近,= 40λ= 0.5

检查契合质量

为了检查拟合的质量,绘制数据和得到的拟合响应曲线。根据模型的返回参数创建响应曲线。

一个= bestx (1);λ= bestx (2);yfit = * exp(λ* tdata);情节(tdata ydata,‘*’);持有情节(tdata yfit,“r”);包含(“tdata”) ylabel (“响应数据和曲线”)标题(数据与最佳拟合指数曲线)传说(“数据”的拟合曲线)举行

相关的话题