基于实例讲解lsqcurvefit参数用法 您所在的位置:网站首页 举一个参数化建模的例子 基于实例讲解lsqcurvefit参数用法

基于实例讲解lsqcurvefit参数用法

2024-06-02 14:40| 来源: 网络整理| 查看: 265

本博文源于《数学建模》,旨在讲解非线性最小二乘拟合的MATLAB实现。谈到matlab中非线性最小二乘拟合,就不得不提到lsqcurvefit与lsqnonlin。博文就讲解一下lsqcurvefit如何使用

一、函数基本用法讲解 x = lsqcurvefit('fun', x0, xdata, ydata,option) fun是一个预先定义的函数F(x,xdata),自变量为x和datax0是非线性最小二乘法的迭代初值xdata 是已知数据点ydata 是已知数据点option是指定具体的非线性优化方法 二、例子讲解

当提到这个函数使用时,我们可能会不知道如何在现实中操作。那么接下来就以一个例子来进行讲解

在这里插入图片描述 我们主要任务确定参数a,b,k。

2.1 确定函数fun

在matlab本地目录下右击创建curvefun1.m,比如这样 在这里插入图片描述点击文件,进行编辑,将 c ( t ) = a + b e − 0.2 k t c(t)=a+be^{-0.2kt} c(t)=a+be−0.2kt 输入进去,代码应该是这样子的

function f=curvefun1(x,tdata) f = x(1)+x(2)*exp(-0.02*x(3)*tdata) % 其中x(1)=a,x(2)=b,x(3)=k 2.2 编写主程序 >> tdata = 100:100:1000; >> cdata = 1e-03*[4.54,4.99,5.35,5.65,5.90,6.10,6.26,6.39,6.50,6.59]; >> x0 = [2.3,9.09,0.05]; >> x = lsqcurvefit('curvefun1',x0,tdata,cdata) >> f=curvefun1(x,tdata) >> plot(tdata,cdata,'rp',tdata,f)

可以计算出

x = 0.0070 -0.0030 0.1032 f = 1 至 5 列 0.0045 0.0050 0.0054 0.0057 0.0059 6 至 10 列 0.0061 0.0063 0.0064 0.0065 0.0066

x三个值分别代表拟合的a,b,k,也就是a=0.0070 b=-0.0030 k=0.1032.函数式为:

c ( t ) = 0.007 + 0.003 ∗ e − 0.2 ∗ 0.1032 ∗ t c(t)=0.007+0.003*e^{-0.2*0.1032*t} c(t)=0.007+0.003∗e−0.2∗0.1032∗t 下面进行图形查看

2.3 观察拟合图形

在这里插入图片描述 可以看见函数图形完美经过点,说明拟合效果非常棒

三、总结

非线性二乘拟合是拟合当中一个描述函数表达式的方法。在使用lsqcurvefit有两个注意点,一个是函数图形再函数文件表示,另一个是初始化迭代参数需要合理选择。参数没选对,拟合效果可能不尽人意。但是在本例中参数调整良好,迭代快速完成,效果如图可见。真是不错的一篇文章,有这方面需求可尽管收藏!



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有