基于MATLAB的非线性曲线拟合

合集下载

matlab各类拟合曲线代码

matlab各类拟合曲线代码

标题:探索MATLAB中各类拟合曲线的代码应用在MATLAB中,拟合曲线是数据分析和模型建立中常用的技术之一。

通过拟合曲线,我们可以了解数据之间的关联性并建立预测模型,为进一步分析和应用数据奠定基础。

本文将深入探讨MATLAB中各类拟合曲线的代码应用,帮助读者更深入地理解该主题。

一、线性拟合曲线1. 使用MATLAB进行线性拟合曲线的代码示例在MATLAB中,使用polyfit函数可以进行线性拟合。

对一组数据点(x, y)进行线性拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [2, 3.5, 5, 7, 8.5];p = polyfit(x, y, 1);```其中,x为自变量,y为因变量,1表示进行一次线性拟合。

通过polyfit函数,可以得到线性拟合的系数p。

2. 线性拟合曲线的应用和特点线性拟合曲线适用于线性关系较为明显的数据,例如物理实验数据中的直线关系。

通过线性拟合,可以获得各项系数,对数据进行预测和建模。

二、多项式拟合曲线1. 使用MATLAB进行多项式拟合曲线的代码示例在MATLAB中,使用polyfit函数同样可以进行多项式拟合。

对一组数据点(x, y)进行二次多项式拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [1, 4, 9, 16, 25];p = polyfit(x, y, 2);```其中,x为自变量,y为因变量,2表示进行二次多项式拟合。

通过polyfit函数,同样可以得到多项式拟合的系数p。

2. 多项式拟合曲线的应用和特点多项式拟合曲线适用于数据中存在曲线关系的情况,通过选择合适的最高次数,可以灵活地拟合各种曲线形状。

三、非线性拟合曲线1. 使用MATLAB进行非线性拟合曲线的代码示例在MATLAB中,使用fit函数可以进行非线性拟合。

对一组数据点(x, y)进行指数函数拟合,代码如下:```matlabx = [1, 2, 3, 4, 5];y = [2.1, 7.4, 16.1, 29.3, 48.2];f = fit(x', y', 'exp1');```其中,x为自变量,y为因变量,'exp1'表示进行指数函数拟合。

Matlab中的曲线拟合方法

Matlab中的曲线拟合方法

Matlab中的曲线拟合方法引言在科学与工程领域,数据拟合是一个重要的技术,可用于分析实验数据、预测未知的对应关系,并量化观察到的现象。

其中,曲线拟合是一种常见的数据拟合方法,而Matlab作为一种功能强大的科学计算软件,提供了多种曲线拟合工具和函数,方便用户进行数据分析和模型建立。

本文将对Matlab中的曲线拟合方法进行详细介绍和讨论。

一、线性拟合线性拟合是最简单且常见的曲线拟合方法,其基本思想是通过一条直线拟合数据点,找到最佳拟合直线的参数。

在Matlab中,可以使用polyfit函数实现线性拟合。

该函数接受两个输入参数,第一个参数为数据点的x坐标,第二个参数为数据点的y坐标。

返回结果为一个一次多项式拟合模型的参数。

例如,我们有一组实验测量数据如下:x = [1, 2, 3, 4, 5];y = [3, 5, 7, 9, 11];通过polyfit函数进行线性拟合:coeff = polyfit(x, y, 1);其中,1表示要拟合的多项式的次数,这里我们选择了一次多项式(直线)。

coeff即为拟合得到的直线的参数,可以通过polyval函数将参数代入直线方程,得到对应x的y值。

y_fit = polyval(coeff, x);接下来,我们可以使用plot函数将原始数据点和拟合曲线都绘制在同一张图上:figure;plot(x, y, 'o', 'MarkerSize', 10); % 绘制原始数据点hold on;plot(x, y_fit); % 绘制拟合曲线xlabel('x');ylabel('y');legend('原始数据点', '拟合曲线');通过观察图像,我们可以初步判断拟合的效果如何。

如果数据点较为分散,直线拟合效果可能较差。

在此情况下,可以考虑使用更高次的多项式进行拟合。

二、多项式拟合多项式拟合是一种常见的曲线拟合方法,其基本思想是通过一个一定次数的多项式函数来拟合数据点。

基于MATLAB的非线性曲线拟合

基于MATLAB的非线性曲线拟合

基于MATLAB的非线性曲线拟合一、本文概述随着科技的不断进步,数据分析和处理在各个领域中都发挥着越来越重要的作用。

非线性曲线拟合作为一种重要的数据处理方法,被广泛应用于科学研究、工程实践以及日常生活等多个领域。

MATLAB作为一款强大的数学计算和数据分析软件,为非线性曲线拟合提供了便捷的工具和丰富的函数库。

本文旨在介绍基于MATLAB的非线性曲线拟合方法,包括非线性模型的建立、参数估计、模型验证等步骤,并通过具体实例展示MATLAB在非线性曲线拟合中的应用。

本文首先简要介绍了非线性曲线拟合的基本概念和研究背景,阐述了非线性曲线拟合在实际应用中的重要性。

接着,详细介绍了MATLAB 中非线性曲线拟合的实现过程,包括非线性模型的构建、数据预处理、参数估计方法的选择、模型拟合和评估等方面。

在此基础上,通过实例分析,展示了MATLAB在非线性曲线拟合中的实际应用,并对拟合结果进行了分析和讨论。

对全文进行了总结,指出了非线性曲线拟合在实际应用中的潜在价值和未来研究方向。

通过本文的学习,读者可以了解非线性曲线拟合的基本原理和方法,掌握MATLAB在非线性曲线拟合中的应用技巧,提高数据处理和分析能力,为相关领域的研究和实践提供有力支持。

二、非线性曲线拟合基础在数据分析和科学研究中,我们经常遇到需要通过一组离散的数据点来寻找其潜在的非线性关系。

非线性曲线拟合就是这样一个过程,它旨在找到最能描述数据点之间关系的非线性函数。

与线性拟合不同,非线性拟合的模型函数通常包含非线性参数,这些参数需要通过一定的优化算法来求解。

MATLAB作为一款强大的数学软件,提供了多种非线性曲线拟合的工具和函数。

在MATLAB中,非线性曲线拟合通常通过lsqcurvefit、lsqnonlin或fit等函数实现。

这些函数允许用户定义自己的非线性模型函数,并通过迭代优化算法来寻找最佳拟合参数。

在进行非线性曲线拟合时,选择合适的模型函数至关重要。

matlab最小二乘法的非线性参数拟合

matlab最小二乘法的非线性参数拟合

matlab最小二乘法的非线性参数拟合首先说一下匿名函数:在创建匿名函数时,Matlab记录了关于函数的信息,当使用句柄调用该函数的时候,Matlab不再进行搜索,而是立即执行该函数,极大提高了效率。

所以首选匿名函数。

具体拟合时可以使用的方法如下:1 曲线拟合工具箱提供了很多拟合函数,使用简单非线性拟合nlinfit函数clear all;x1=[0.4292 0.4269 0.381 0.4015 0.4117 0.3017]';x2=[0.00014 0.00059 0.0126 0.0061 0.00425 0.0443]';x=[x1 x2];y=[0.517 0.509 0.44 0.466 0.479 0.309]';f=@(p,x)2.350176*p(1)*(1-1/p(2))*(1-(1-x(:,1).^(1/p(2))).^p(2)).^2.*(x(:,1).^(-1/p(2))-1).^(-p(2)).*x(:,1).^(-1/p(2)-0.5).*x(:,2);p0=[8 0.5]';opt=optimset('TolFun',1e-3,'TolX',1e-3);%[p R]=nlinfit(x,y,f,p0,opt)2 最小二乘法在曲线拟合中比较普遍。

拟合的模型主要有1.直线型2.多项式型3.分数函数型4.指数函数型5.对数线性型6.高斯函数型一般对于LS问题,通常利用反斜杠运算“\”、fminsearch或优化工具箱提供的极小化函数求解。

在Matlab中,曲线拟合工具箱也提供了曲线拟合的图形界面操作。

在命令提示符后键入:cftool,即可根据数据,选择适当的拟合模型。

“\”命令1.假设要拟合的多项式是:y=a+b*x+c*x^2.首先建立设计矩阵X:X=[ones(size(x)) x x^2];执行:para=X\ypara中包含了三个参数:para(1)=a;para(2)=b;para(3)=c;这种方法对于系数是线性的模型也适应。

使用Matlab进行数据拟合的方法

使用Matlab进行数据拟合的方法

使用Matlab进行数据拟合的方法概述:数据拟合是数据分析中常用的一种技术,它通过找到适合特定数据集的数学模型,在给定数据范围内预测未知变量的值。

在科学研究、工程分析和金融建模等领域,数据拟合起到了至关重要的作用。

而Matlab作为一种强大的数值计算工具,提供了丰富的函数和工具箱来实现各种数据拟合方法。

本文将介绍几种常见的使用Matlab进行数据拟合的方法。

一、线性回归线性回归是一种基本的数据拟合方法,它用于建立自变量和因变量之间的线性关系。

Matlab中可以使用`polyfit`函数来实现线性拟合。

具体步骤如下:1. 导入数据集。

首先需要将数据集导入到Matlab中,可以使用`importdata`函数读取数据文件。

2. 根据自变量和因变量拟合一条直线。

使用`polyfit`函数来进行线性拟合,返回的参数可以用于曲线预测。

3. 绘制拟合曲线。

使用`plot`函数绘制原始数据点和拟合曲线,比较其拟合效果。

二、多项式拟合多项式拟合是一种常见的非线性拟合方法,它通过拟合多项式函数来逼近原始数据集。

Matlab中使用`polyfit`函数同样可以实现多项式拟合。

具体步骤如下:1. 导入数据集。

同线性回归一样,首先需要将数据集导入到Matlab中。

2. 选择多项式次数。

根据数据集的特点和实际需求,选择适当的多项式次数。

3. 进行多项式拟合。

使用`polyfit`函数,并指定多项式次数,得到拟合参数。

4. 绘制拟合曲线。

使用`plot`函数绘制原始数据点和拟合曲线。

三、非线性拟合有时候,数据集并不能通过线性或多项式函数来准确拟合。

这时,需要使用非线性拟合方法,通过拟合非线性方程来逼近原始数据。

Matlab中提供了`lsqcurvefit`函数来实现非线性拟合。

具体步骤如下:1. 导入数据集。

同样,首先需要将数据集导入到Matlab中。

2. 定义非线性方程。

根据数据集的特点和实际需求,定义适当的非线性方程。

Matlab 线性拟合 & 非线性拟合

Matlab 线性拟合 & 非线性拟合

Matlab 线性拟合& 非线性拟合分类:Computer Vision MATLAB 2012-06-22 21:24 46022人阅读评论(5) 收藏举报matlabplotrandomc图像处理目录(?)[+]使用Matlab进行拟合是图像处理中线条变换的一个重点内容,本文将详解Matlab中的直线拟合和曲线拟合用法。

关键函数:fittypeFit type for curve and surface fittingSyntaxffun = fittype(libname)ffun = fittype(expr)ffun = fittype({expr1,...,exprn})ffun = fittype(expr, Name, Value,...)ffun= fittype({expr1,...,exprn}, Name, Value,...)/***********************************线性拟合***********************************/线性拟合公式:coeff1 * term1 + coeff2 * term2 + coeff3 * term3 + ...其中,coefficient是系数,term都是x的一次项。

线性拟合Example:Example1: y=kx+b;法1:[csharp]view plaincopyprint?1.x=[1,1.5,2,2.5,3];y=[0.9,1.7,2.2,2.6,3];2.p=polyfit(x,y,1);3.x1=linspace(min(x),max(x));4.y1=polyval(p,x1);5.plot(x,y,'*',x1,y1);结果:p = 1.0200 0.0400即y=1.0200 *x+ 0.0400法2:[csharp]view plaincopyprint?1.x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.p=fittype('poly1')3.f=fit(x,y,p)4.plot(f,x,y);运行结果:[csharp]view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.p=fittype('poly1')3.f=fit(x,y,p)4.plot(f,x,y);5.6.p =7.8. Linear model Poly1:9. p(p1,p2,x) = p1*x + p210.11.f =12.13. Linear model Poly1:14. f(x) = p1*x + p215. Coefficients (with 95% confidence bounds):16. p1 = 1.02 (0.7192, 1.321)17. p2 = 0.04 (-0.5981, 0.6781)Example2:y=a*x + b*sin(x) + c法1:[csharp]view plaincopyprint?1.x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.EXPR = {'x','sin(x)','1'};3.p=fittype(EXPR)4.f=fit(x,y,p)5.plot(f,x,y);运行结果:[csharp]view plaincopyprint?1. x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.EXPR = {'x','sin(x)','1'};3.p=fittype(EXPR)4.f=fit(x,y,p)5.plot(f,x,y);6.7.p =8.9. Linear model:10. p(a,b,c,x) = a*x + b*sin(x) + c11.12.f =13.14. Linear model:15. f(x) = a*x + b*sin(x) + c16. Coefficients (with 95% confidence bounds):17. a = 1.249 (0.9856, 1.512)18. b = 0.6357 (0.03185, 1.24)19. c = -0.8611 (-1.773, 0.05094)法2:[csharp]view plaincopyprint?1.x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. p=fittype('a*x+b*sin(x)+c','independent','x')3.f=fit(x,y,p)4.plot(f,x,y);运行结果:[csharp]view plaincopyprint?1.x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. p=fittype('a*x+b*sin(x)+c','independent','x')3.f=fit(x,y,p)4.plot(f,x,y);5.6.p =7.8. General model:9. p(a,b,c,x) = a*x+b*sin(x)+c10.Warning: Start point not provided, choosing random start11.point.12.> In fit>iCreateWarningFunction/nThrowWarning at 73813. In fit>iFit at 32014. In fit at 10915.16.f =17.18. General model:19. f(x) = a*x+b*sin(x)+c20. Coefficients (with 95% confidence bounds):21. a = 1.249 (0.9856, 1.512)22. b = 0.6357 (0.03185, 1.24)23. c = -0.8611 (-1.773, 0.05094)/***********************************非线性拟合***********************************/ Example:y=a*x^2+b*x+c法1:[cpp]view plaincopyprint?1.x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2. p=fittype('a*x.^2+b*x+c','independent','x')3.f=fit(x,y,p)4.plot(f,x,y);运行结果:[csharp]view plaincopyprint?1.p =2.3. General model:4. p(a,b,c,x) = a*x.^2+b*x+c5.Warning: Start point not provided, choosing random start6.point.7.> In fit>iCreateWarningFunction/nThrowWarning at 7388. In fit>iFit at 3209. In fit at 10910.11.f =12.13. General model:14. f(x) = a*x.^2+b*x+c15. Coefficients (with 95% confidence bounds):16. a = -0.2571 (-0.5681, 0.05386)17. b = 2.049 (0.791, 3.306)18. c = -0.86 (-2.016, 0.2964)法2:[csharp]view plaincopyprint?1.x=[1;1.5;2;2.5;3];y=[0.9;1.7;2.2;2.6;3];2.%use c=0;3.c=0;4.p1=fittype(@(a,b,x) a*x.^2+b*x+c)5.f1=fit(x,y,p1)6.%use c=1;7.c=1;8.p2=fittype(@(a,b,x) a*x.^2+b*x+c)9.f2=fit(x,y,p2)10.%predict c11.p3=fittype(@(a,b,c,x) a*x.^2+b*x+c)12.f3=fit(x,y,p3)13.14.%show results15.scatter(x,y);%scatter point16.c1=plot(f1,'b:*');%blue17.hold on18.plot(f2,'g:+');%green19.hold on20.plot(f3,'m:*');%purple21.hold off•上一篇特征提取方法SIFT,PCA-SIFT,GLOH,SURF •下一篇浙大计算机研究生复试上机考试-2009年。

MATLAB实例:多元函数拟合(线性与非线性)

MATLAB实例:多元函数拟合(线性与非线性)

MATLAB实例:多元函数拟合(线性与⾮线性)MATLAB实例:多元函数拟合(线性与⾮线性)作者:凯鲁嘎吉 - 博客园更多请看:之前写过⼀篇博⽂,是。

现在⽤拟合多元函数,实现线性拟合与⾮线性拟合,其中⾮线性拟合要求⾃定义拟合函数。

下⾯给出三种拟合⽅式,第⼀种是多元线性拟合(回归),第⼆三种是多元⾮线性拟合,实际中第⼆三种⽅法是⼀个意思,任选⼀种即可,推荐第⼆种拟合⽅法。

1. MATLAB程序fit_nonlinear_data.mfunction [beta, r]=fit_nonlinear_data(X, Y, choose)% Input: X ⾃变量数据(N, D), Y 因变量(N, 1),choose 1-regress, 2-nlinfit 3-lsqcurvefitif choose==1X1=[ones(length(X(:, 1)), 1), X];[beta, bint, r, rint, states]=regress(Y, X1)% 多元线性回归% y=beta(1)+beta(2)*x1+beta(3)*x2+beta(4)*x3+...% beta—系数估计% bint—系数估计的上下置信界% r—残差% rint—诊断异常值的区间% states—模型统计信息rcoplot(r, rint)saveas(gcf,sprintf('线性曲线拟合_残差图.jpg'),'bmp');elseif choose==2beta0=ones(7, 1);% 初始值的选取可能会导致结果具有较⼤的误差。

[beta, r, J]=nlinfit(X, Y, @myfun, beta0)% ⾮线性回归% beta—系数估计% r—残差% J—雅可⽐矩阵[Ypred,delta]=nlpredci(@myfun, X, beta, r, 'Jacobian', J)% ⾮线性回归预测置信区间% Ypred—预测响应% delta—置信区间半⾓plot(X(:, 1), Y, 'k.', X(:, 1), Ypred, 'r');saveas(gcf,sprintf('⾮线性曲线拟合_1.jpg'),'bmp');elseif choose==3beta0=ones(7, 1);% 初始值的选取可能会导致结果具有较⼤的误差。

应用MATLAB进行非线性回归分析

应用MATLAB进行非线性回归分析

应用MATLAB进行非线性回归分析摘要早在十九世纪,英国生物学家兼统计学家高尔顿在研究父与子身高的遗传问题时,发现子代的平均高度又向中心回归大的意思,使得一段时间内人的身高相对稳定。

之后回归分析的思想渗透到了数理统计的其他分支中。

随着计算机的发展,各种统计软件包的出现,回归分析的应用就越来越广泛。

回归分析处理的是变量与变量间的关系。

有时,回归函数不是自变量的线性函数,但通过变换可以将之化为线性函数,从而利用一元线性回归对其进行分析,这样的问题是非线性回归问题。

下面的第一题:炼钢厂出钢水时用的钢包,在使用过程中由于钢水及炉渣对耐火材料的侵蚀,使其容积不断增大。

要找出钢包的容积用盛满钢水时的质量与相应的实验次数的定量关系表达式,就要用到一元非线性回归分析方法。

首先我们要对数据进行分析,描出数据的散点图,判断两个变量之间可能的函数关系,对题中的非线性函数,参数估计是最常用的“线性化方法”,即通过某种变换,将方程化为一元线性方程的形式,接着我们就要对得到的一些曲线回归方程进行选择,找出到底哪一个才是更好一点的。

此时我们通常可采用两个指标进行选择,第一个是决定系数,第二个是剩余标准差。

进而就得到了我们想要的定量关系表达式。

第二题:给出了某地区1971—2000年的人口数据,对该地区的人口变化进行曲线拟合。

也用到了一元非线性回归的方法。

首先我们也要对数据进行分析,描出数据的散点图,然后用MATLAB编程进行回归分析拟合计算输出利用Logistic模型拟合曲线。

关键词:参数估计,Logistic模型,MATLAB正文一、一元非线性回归分析的求解思路:•求解函数类型并检验。

•求解未知参数。

可化曲线回归为直线回归,用最小二乘法求解;可化曲线回归为多项式回归。

二、回归曲线函数类型的选取和检验1、直接判断法2、作图观察法,与典型曲线比较,确定其属于何种类型,然后检验。

3、直接检验法(适应于待求参数不多的情况)4、表差法(适应于多想式回归,含有常数项多于两个的情况)三、化曲线回归为直线回归问题用直线检验法或表差法检验的曲线回归方程都可以通过变量代换转化为直线回归方程,利用线性回归分析方法可求得相应的参数估计值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

vefit,确定模型 (2)中的参数 c1 , c2 , c3 。求解过程为 :
先编写一个 M - 函数文件 Examp le2_1
M - file: function f = Examp le2_1 ( c, tdata)
f = c (1 ) 3 ( exp ( - c ( 2 ) 3 tdata) - exp ( - c ( 3 ) 3 tda2
17
先编写 M - 函数文件 Examp le2_2
M - file: function f = Examp le2_2 ( c, tdቤተ መጻሕፍቲ ባይዱta, ydata)
tdata = [ 0. 25 0. 5 0. 75 1 1. 5 2 2. 5 3 3. 5 4 4. 5 5 6 7 8 9
10 11 12 13 14 15 16 ];
legend ( ′实验数据 ′, ′一次拟合 ′, ′二次拟合 ′) ; 故一次 、二次拟合多项式分别为 :
y3 = 2. 2516x + 2. 0131 和 y3 = 0. 0313x2 + 2. 2516x + 2. 0001,拟合曲线图见图 1。
图 1 例 1多项式曲线拟合图
(2)非线性数据拟合函数 lsqcurvefit和 lsqnonlin。 MATLAB 提供了两个求解最小二乘非线性数据 拟合问题的命令 lsqcurvefit和 lsqnonlin。两者都要事 先定义 M - 函数文件 。 ① c = lsqcurvefit ( ′fun′, x0, xdata, ydata) 其中‘fun’为拟合函数的 M - 函数文件名 , x0为 初始向量 , xdata, ydata为参与曲线拟合的实验数据 。 函数返回值 c为非线性函数‘fun’的拟合系数 。 例 2: 2004年全国大学生数学建模竞赛 C题 (酒 后驾车 )中给出某人在短时间内喝下两瓶啤酒后 ,间 隔一定的时间 t测量他的血液中酒精含量 y (毫克 /百 毫升 ) ,得到数据如表 1所示 。
ydata = [ 30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25
18 15 12 10 7 7 4 ];
f = c (1) 3 ( exp ( - c ( 2) 3 tdata) - exp ( - c ( 3) 3 tdata) )
- ydata; 保存后 ,在 MATLAB命令窗口输入语句 :
例 1:给出下表数据 ,试用最小二乘法求一次和 二次拟合多项式 。
x - 1. 00 - 0. 75 - 0. 50 - 0. 25 0 0. 25 0. 50 0. 75 1. 00 y - 0. 2209 0. 3295 0. 8826 1. 4392 2. 0003 2. 5645 3. 1334 3. 7061 4. 2836 clear; close;
ta) ) ;
p lot ( tdata, ydata, ′+ ′, tdata, y1 ) ; legend ( ′实验数据 ′, ′拟 合曲线 ′)
成功得到最优解为 : c = 114. 2587 0. 1852 2. 0124
从而得出拟合曲线 :
y = 114. 2587 ( e - 0. 1852t - e - 2. 0124t )
ta) ) ;
以文件名 Examp le2_1保存后 ,在 MATLAB 的命令窗口中
输入语句 :
tdata = [ 0. 25 0. 5 0. 75 1 1. 5 2 2. 5 3 3. 5 4 4. 5 5 6 7 8 9
10 11 12 13 14 15 16 ];
ydata = [ 30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25
18 15 12 10 7 7 4 ];
c0 = [ 1 1 1 ];
for i = 1: 50 c = lsqcurvefit( ′Examp le2_1′, c0, tdata, ydata) ; c0 = c; %以计算出的 c为初值进行迭代 ;
end
y1 = c (1) 3 ( exp ( - c ( 2 ) 3 tdata) - exp ( - c ( 3 ) 3 tda2
(4)
2. 图形窗口形式 。
(1)利用多项式拟合的交互图命令 ( GU I) poly2
tool调用格式为 :
polytool ( x, y) 其中 x, y分别为实验数据构成向量 ,例如利用 polytool求解例 1的 MATLAB 命令如下 :
x = - 1: 0. 25: 1;
y = [ - 0. 2209, 0. 3295, 0. 8826, 1. 4392, 2. 0003, 2. 5645,
Non linear Curve F itting Ba sed on M ATLAB
TANG J ia2de
(Department of M athematics, Chuxiong Normal University, Chuxiong 675000, China)
Abstract: This paper introduces the function of nonlinear curve fitting ofMATLAB software. By doing experiments w ith computer and error analysis, it is looking for better nonlinerar function to fit experimental data, in order to exp lore and get correct solution of nonlinear curve fitting. Key words: curve fitting; nonlinear; MATLAB
c0 = [ 1 1 1 ];
for i = 1: 50 c = lsqnonlin ( ′Examp le2_2′, c0) ; c0 = c;
end
c
c = 114. 2587 0. 1852 2. 0124 ,从而得出拟合曲线 :
y = 114. 2587 ( e - 0. 1852t - e - 2. 0124t )
1. 函数形式 。 (1)多项式拟合函数 Polyfit。 利用该函数进行多项式曲线拟合 ,其调用格式 为:
p = polyfit( x, y, n)
收稿日期 : 2007205214 作者简介 :唐家德 (1970 - ) ,男 ,云南楚雄人 , 楚雄师范学院数学系副教授 ,硕士 ,研究方向 :微分方程和数值计算 。
2 M ATLAB曲线拟合的相关方法
MATLAB 提供了两种方法进行曲线拟合 。一种 是以函数的形式 ,使用命令对数据进行拟合 。这种方 法比较繁琐 ,需要对拟合函数有比较好的了解 。另外 一种是用图形窗口进行操作 ,具有简便 、快速 ,可操作 性强的优点 。另外 , MATLAB 从拟合曲线的对象上 看 ,又可分为多项式曲线拟合和其它非线性曲线拟 合 ,具体介绍如下 :
表 1 酒精含量与饮酒时间的实验数据
图 2 例 2非线性曲线拟合图
时间 (小时 ) 0. 25 0. 5 0. 75 1 1. 5 2 2. 5 3 3. 5 4 4. 5 5
酒精含量 30 68 75 82 82 77 68 68 58 51 50 41
时间 (小时 ) 6 7 8 9 10 11 12 13 14 15 16
0 引 言
在科学实验及应用领域中 ,时常需要在分析一组 测试数据的基础上 ,去求自变量与应变量之间近似函 数关系表达式 ,以便计算机或其它设计人员利用它来 方便地进行其它设计计算 。这类问题在图形上就是
由测得的点求曲线拟合的问题 。
1 曲线拟合的基本原理
所谓曲线拟合是指设法找出某条光滑的曲线 ,它
3. 1334, 3. 7061, 4. 2836 ];
polytool( x, y)
图 3 多项式 (线性 )拟合的 图 4 多项式 (二次 )拟合的 交互式界面 交互式界面
打开多项式拟合的交互式界面 ,见图 3,由于要 拟合的函数为线性函数 ,因此在多项式拟合交互式界 面中的 Degree中输入 1,点击导出数据 Export,出现 保存对话框 Export to Workspace,选中 Parameters (参 数 ) , Residuals (残 差 ) 后 点 击 OK, 在 MATLAB 的 Workspace窗口中可以看到参数为 : 2. 2516和 2. 0131
酒精含量 38 35 28 25 18 15 12 10 7 7 4
题目要求结合给定数据建立饮酒后血液中酒精 浓度的数学模型 。通过建立微分方程模型得到短时 间内喝酒后血液中酒精浓度与时间的关系为 :
y = c1 ( e - c2 t - e - c3 t)
(2)
现在根据实验数据 ,利用非线性拟合函数 lsqcur2
能最佳地拟合数据 。在曲线拟合时 ,并不要求拟合曲
线一定要经过每一个数据点 。其思想是使它能反映
这些离散数据的变化趋势 ,使数据点的误差平方和最
小 。也就是已知一组测定的数据 (例如 N 个点 ( xi ,
yi ) )去求得自变量 x和因变量 y的一个近似解析表
达式
y

(
x)
。若记误差
δ i
=φ( xi )
2008年第 6期 文章编号 : 100622475 (2008) 0620015205
计算机与现代化 J ISUANJ I YU X IANDA IHUA
基于 MATLAB的非线性曲线拟合
唐家德
总第 154期
(楚雄师范学院数学系 ,云南 楚雄 675000)
相关文档
最新文档