matlab lsqcurvefit_【基础教程】lsqcurvefit使用

非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x, xdata),但不知道系数向量x。进行曲线拟合,求x使得输出的如下最小二乘表达式成立:

min Σ(F(x,xdatai)-ydatai)^2
函数 lsqcurvefit
格式 x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
[x,resnorm] = lsqcurvefit(…)
[x,resnorm,residual] = lsqcurvefit(…)
[x,resnorm,residual,exitflag] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda] = lsqcurvefit(…)
[x,resnorm,residual,exitflag,output,lambda,jacobian] =lsqcurvefit(…)
参数说明:
x0为初始解向量;xdata,ydata为满足关系ydata=F(x, xdata)的数据;
lb、ub为解向量的下界和上界lb≤x≤ub,若没有指定界,则lb=[ ],ub=[ ];
options为指定的优化参数;
fun为待拟合函数,计算x处拟合函数值,其定义为 function F = myfun(x,xdata)
resnorm=sum ((fun(x,xdata)-ydata).^2),即在x处残差的平方和;
residual=fun(x,xdata)-ydata,即在x处的残差;
exitflag为终止迭代的条件;
output为输出的优化信息;
lambda为解x处的Lagrange乘子;
jacobian为解x处拟合函数fun的jacobian矩阵。
例 求解如下最小二乘非线性拟合问题
已知输入向量xdata和输出向量ydata,且长度都是n,待拟合函数的表达式为

e83bd2f328eca119cc903499f4cc159e.png

function main()clear all;close all;clc; X = 0:0.01:50; a = 0.15;m = 1.8;c = 0.1;Y = c + 1./(1 + X.*a).^m; param_0 = [1 1 1]; param = lsqcurvefit(@fit_simp, param_0, X, Y) Y_new = param(3) + 1./(1 + X.*param(1)).^param(2); plot(X, Y, '*r', X, Y_new, 'b');endfunction diff = fit_simp(param, X) a = param(1);m = param(2);c = param(3);diff = c + 1./(1 + X.*a).^m;end

44f96e4f1e1afd12e8465102b765807e.png

往期回顾>>>>>>

【模式识别】Matlab指纹识别【图像处理】LSB水印技术matlab自动识别银行卡号【基础教程】MATLAB导出高清晰图片无参考图像质量评价之基于多特征的增强图像质量评价

c2a04cb148c58d6960f4b45fcea7820e.png

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值