用最小二乘求解非线性曲线拟合(数据拟合)问题

您所在的位置:网站首页 调色的曲线怎么用 用最小二乘求解非线性曲线拟合(数据拟合)问题

用最小二乘求解非线性曲线拟合(数据拟合)问题

2023-05-22 10:44| 来源: 网络整理| 查看: 265

要拟合的函数,指定为函数句柄或函数名称。fun 函数采用两个输入:向量或矩阵 x,以及向量或矩阵 xdata。fun 返回向量或矩阵 F,即在 x 和 xdata 处计算的目标函数。函数 fun 可以指定为函数文件的函数句柄:

x = lsqcurvefit(@myfun,x0,xdata,ydata)

其中 myfun 是一个 MATLAB® 函数,例如

function F = myfun(x,xdata) F = ... % Compute function values at x, xdata

fun 也可以是匿名函数的函数句柄。

f = @(x,xdata)x(1)*xdata.^2+x(2)*sin(xdata); x = lsqcurvefit(f,x0,xdata,ydata);

lsqcurvefit 以 x0 参数的形状将 x 传递给目标函数。例如,如果 x0 是 5×3 数组,则 lsqcurvefit 将 x 以 5×3 数组的形式传递给 fun。

注意

fun 应返回 fun(x,xdata),而不是平方和 sum((fun(x,xdata)-ydata).^2)。lsqcurvefit 隐式计算 fun(x,xdata)-ydata 的分量的平方和。请参阅示例。

如果雅可比矩阵也可以计算并且 'SpecifyObjectiveGradient' 选项为 true,设置如下

options = optimoptions('lsqcurvefit','SpecifyObjectiveGradient',true)

则函数 fun 必须返回第二个输出参数,即在 x 处计算的雅可比值矩阵 J。通过检查 nargout 的值,当仅使用一个输出参数调用 fun 时(在优化算法只需 F 的值而不需要 J 的情况下),该函数可以避免计算 J。

function [F,J] = myfun(x,xdata) F = ... % objective function values at x if nargout > 1 % two output arguments J = ... % Jacobian of the function evaluated at x end

如果 fun 返回由 m 个分量组成的向量(矩阵)且 x 包含 n 个元素(其中 n 是 x0 的元素数),则雅可比矩阵 J 是一个 m×n 矩阵,其中 J(i,j) 是 F(i) 关于 x(j) 的偏导数。(雅可比值 J 是 F 的梯度的转置。)有关详细信息,请参阅编写向量和矩阵目标函数。

示例: @(x,xdata)x(1)*exp(-x(2)*xdata)

数据类型: char | function_handle | string



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3