matlab数据拟合四维拟合问题

Matlab曲线拟合问题_百度知道
Matlab曲线拟合问题
请教大家一个问题,已有一组[x,y]的数据,现在要用3次曲线对其进行拟合,曲线方程为参数方程,即为x=f(t) ,y=f(t),t=[0,1],且方程的模式已经固定,只是有个别参数未知,这种情况下要怎样去拟合,且拟合过程中控制残差平方和最小。麻烦各位指点指点,谢谢了!
%% 构造数据x=-10:.1:10;y=x.^3+5*randn(1,length(x))figure,plot(x,y),title('原始数据')%% 打开拟合工具箱进行拟合%% 拟合结果 ,得到函数的参数% Linear model Poly3:%&&&&& f(x) = p1*x^3 + p2*x^2 + p3*x + p4% Coefficients (with 95% confidence bounds):&&&&&& p1 =&&&&&& 1.006 % (1.001, 1.01)&&&&&& p2 =&&&& 0.01305 % (-0.012)&&&&&& p3 =&&&& -0.3299 % (-0.6293, -0.03041)&&&&&& p4 =&&&&& -0.375& %(-1.417, 0.6674)&&&& f = p1.*x.^3 + p2.*x.^2 + p3.*x + p4&&&& figure,plot(x,f),title('拟合后得到的函数图象')% Goodness of fit:%&& SSE: 4917%&& R-square: 0.9998%&& Adjusted R-square: 0.9998%&& RMSE: 4.996&&
其他类似问题
为您推荐:
其他1条回答
我用过的一个比较通用的方法就是使用fminsearch函数,可以用来拟合多种方程,包括非线性方程。首先定义一个目标函数,以方程的未知参数为自变量,残差平方和为函数值,然后给出一个适当的初始值和一些控制参数,就可以用fminsearch函数找到使目标函数达到最小值的解。如果是三次曲线拟合,而且还是最小二乘法(就是残差平方和最小),可以考虑用线性代数的方法,反正同样可以用Matlab计算。
曲线拟合的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁关于matlab中球的拟合求解问题_百度知道
关于matlab中球的拟合求解问题
实验中,初步求得球心和半径的预设值:预设球心为:
23.86预设球半径为:
32.7018想根据 点集 (2756个顶点)去拟合,求解 球心和球半径,请问如何实现?
提问者采纳
得到的点的数据保存于 X Y Z矩阵X,Y,Z矩阵都是2765x1的矩阵,分别存放数据点的三个坐标值fun=@(p) (X-p(1)).^2+(Y-p(2)).^2+(Z-p(3)).^2-p(4)^2;pp=lsqnonlin(fun,[90.9,429.8]);这样得到的pp就是拟合的结果pp(1) ~pp(3)分别是拟合得到球心的x,y,z坐标,pp(4)是拟合所得半径
&目标函数是:请问fun是怎么构成的,fun=@(p) (X-p(1)).^2+(Y-p(2)).^2+(Z-p(3)).^2-p(4)^2@(p) (X-p(1)).^2表示什么意思,谢谢。
就是就是两点||pi-p||就是数据中第i点pi与圆心p的距离根据两点间的距离公式
r=sqrt( (x-x0)^2+(y-y0)^2+(z-z0)^2)要用你公式所述的目标函数,只要把函数改为fun=@(p) sqrt((X-p(1)).^2+(Y-p(2)).^2+(Z-p(3)).^2))-p(4);就可以了其中p是待拟合的参数,是有四个值的向量p(1)=x0,p(2)=y0,p(3)=z0,p(r)=r而lsqnonlin就是matlab非线性最小二乘发的拟合函数其主要作用是为 函数 f(p) 找到让 sum (f(p)^2)最小的p值这个时候,原来的X,Y,Z数据是已知的,而p是未知的如果给出某组p的值,也就是给出空间中一点的坐标和半径那么fun(p)就可以返回一个长度与X,Y,Z一样的向量,其中每个值对应于数据中每个点到给定点p(1),p(2),p(3)的距离和给定半径p(4)之间的差如果数据恰好是在同一个球面上,而p的取值恰好符合圆心和半径可以遇见,用每一个数据点计算出的函数值fun(p)都是0数据是有误差的,并不是恰好共球面,所以不可能找到一组p使得fun(p)返回的数组中每一个值都为0但是可以在最小二乘的意义下,找到最合适的p使得fun(p)返回的数组中所有元素的平方和最小
请教如何解决,再次感谢。
提问者评价
其他类似问题
为您推荐:
matlab的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Matlab 函数拟合问题_百度知道
Matlab 函数拟合问题
已知函数的形式为y(x)=A(e的Bx次方—e的Cx次方)其中x是自变量,A,B,C为待测常数,用MATLAB函数拟合工具确定出A,B,C的值。把程序和结果做出来。x={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} y={30,68,75,82,82,77,68,68,58,51,50,41,38,35,28,25,18,15,12,10 7,7,4}
本人是彻底的菜鸟啊,最好直接写个程序复制过去就能运行的……
提问者采纳
在m文件中新建一个待拟合的函数 function F=curve_fit(x,xdata)%y(x)=A(e的Bx次方—e的Cx次方)F=x(1)*(exp(x(2)*xdata)-exp(x(3)*.xdata));在命令行输入xdata=[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] ;x0 = [10, 10, 10]; %初始估计值[x,resnorm] = lsqcurvefit(@curve_fit,x0,xdata,ydata)则x就是A B C 的值 ;希望对你有帮助
提问者评价
其他类似问题
为您推荐:
您可能关注的推广
matlab的相关知识
其他1条回答
在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function y=nihe(a,x)
y=a(1)*(e^(a(2)*x)-e^(a(3)*x))
%其中a=[a(1),a(2),a(3)]
%A、B、C分别用a(1),a(2),a(3)表示。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
在Matlab下面输入:
x={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}
y=nihe([a,b,c],x)
[A,res]=lsqcurvefit('nihe',ones(1,23),x,y);
得到的结果:
跟a,b,c的值大致一样。
以下是你的问题:
你设好x,y后,在Matlab下输入:
[A,res]=lsqcurv...
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁matlab曲线拟合问题分析24
上亿文档资料,等你来发现
matlab曲线拟合问题分析24
2013高教社杯全国大学生数学建模竞赛;承诺书;我们仔细阅读了《全国大学生数学建模竞赛章程》和《;我们完全明白,在竞赛开始后参赛队员不能以任何方式;我们知道,抄袭别人的成果是违反竞赛章程和参赛规则;我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证;我们授权全国大学生数学建模竞赛组委会,可将我们的;我们参赛选择的题号是(从A/B/C/D中选择一项;我们的参赛报
2013高教社杯全国大学生数学建模竞赛 承
书 我们仔细阅读了《全国大学生数学建模竞赛章程》和《全国大学生数学建模竞赛参赛规则》(以下简称为“竞赛章程和参赛规则”,可从全国大学生数学建模竞赛网站下载)。我们完全明白,在竞赛开始后参赛队员不能以任何方式(包括电话、电子邮件、网上咨询等)与队外的任何人(包括指导教师)研究、讨论与赛题有关的问题。我们知道,抄袭别人的成果是违反竞赛章程和参赛规则的,如果引用别人的成果或其他公开的资料(包括网上查到的资料),必须按照规定的参考文献的表述方式在正文引用处和参考文献中明确列出。我们郑重承诺,严格遵守竞赛章程和参赛规则,以保证竞赛的公正、公平性。如有违反竞赛章程和参赛规则的行为,我们将受到严肃处理。我们授权全国大学生数学建模竞赛组委会,可将我们的论文以任何形式进行公开展示(包括进行网上公示,在书籍、期刊和其他媒体进行正式或非正式发表等)。 我们参赛选择的题号是(从A/B/C/D中选择一项填写):我们的参赛报名号为(如果赛区设置报名号的话):所属学校(请填写完整的全名):
中国人民解放军理工大学
参赛队员 (打印并签名) :1.
韦炜致 指导教师或指导教师组负责人
(打印并签名):
刘守生(论文纸质版与电子版中的以上信息必须一致,只是电子版中无需签名。以上内容请仔细核对,提交后将不再允许做任何修改。如填写错误,论文可能被取消评奖资格。) 日期:
日赛区评阅编号(由赛区组委会评阅前进行编号): 2013高教社杯全国大学生数学建模竞赛 编 号 专 用 页 赛区评阅编号(由赛区组委会评阅前进行编号): 全国统一编号(由赛区组委会送交全国前编号): 全国评阅编号(由全国组委会评阅前进行编号):通过曲线拟合的方法探究两个相关量之间的关系 一、摘要本文采用最小二乘法、最小一乘法的分析方法,通过建立线性规划模型与非线性规划模型等多种形式,利用Matlab、Lingo编程实现曲线拟合,以探究两个相关量y量与x量之间的关系。对于问题一,在拟合准则为偏差平方和最小的前提下,采用最小二乘法,通过Matlab编程得到a?0.012,b?0.803,即可得拟合直线y?0.803x?0.012。对于问题二,在拟合准则为绝对偏差总和最小的前提下,采用最小一乘法,并将无约束不可微最优化问题转化为解决线性规划问题,通过Matlab编程得到a?0.750,b?0.575,即可得拟合直线y?0.575x?0.750。对于问题三,在拟合准则为最大偏差极小化的前提下,采用线性规划模型,通过 Matlab编程得到a?-4.758,b?1.130,即得拟合直线y?1.130x?4.758。对于问题四,在拟合准则为偏差平方和最小的前提下,继续采用最小二乘法,得到a?1.425,b?-0.139,c?0.097,则y?0.097x2?0.139x?1.425为所拟合的曲线。在拟合准则为绝对偏差总和最小的前提下,构造非线性规划模型,得到a?1.000,b?-0.805,c?0.160,则y?0.160x2?0.805?1.000为所拟合的曲线。在拟合准则为最大偏差极小化的前提下,也是构造非线性规划模型,得到a?0.469,b?0.766,c?0.025,则y?0.025x2?0.766x?0.469为所拟合的曲线。对于问题五,重新观察散点图的图像特征,采用最小二乘法,拟合出相应的指数函数曲线图像和对数函数曲线图像,发现y?0.943?0.240?的指数函数曲线方程较对数函数曲线方程y?2.566ln?x?0.809?更准确地表现出y量与x量之间的关系。 x 关键词
最小二乘法 最小一乘法 线性规划 曲线拟合 二、问题重述已知一个量y依赖于另一个量x,现收集有数据如下: (1)求拟合以上数据的直线y?bx?a。目标为使y的各个观察值同按直线关系所预期的值的偏差平方和为最小。(2)求拟合以上数据的直线y?bx?a,目标为使y的各个观察值同按直线关系所预期的值的绝对偏差总和为最小。(3)求拟合以上数据的直线,目标为使y的各个观察值同按直线关系所预期的值的最大偏差为最小。(4)求拟合以上数据的曲线y?cx2?bx?a,实现(1)(2)(3)三种目标。(5)试一试其它的曲线,可否找出最好的? 三、问题分析由题目可知,y量依赖于x量,也就是说y量与x量之间存在着必然的联系。这就要求我们通过曲线拟合的方式来探究y量与x量之间的关系。对于问题一,拟合题中所给数据的直线y?bx?a,目标为使y的各个观察值同按直线关系所预期的值的偏差平方和为最小。拟合准则偏差平方和最小,即为最为常用的最小二乘准则,故该问就转化为了在最小二乘准则下的曲线拟合问题,也就是一个多元函数的最小值问题,故而可采用最小二乘法,利用Matlab编程进行曲线拟合进行求解。对于问题二,拟合题中所给数据的直线y?bx?a,目标为使y的各个观察值同按直线关系所预期的值的绝对偏差总和为最小。对于要在拟合准则绝对偏差总和最小的情况下拟合曲线,应采用最小一乘法原理,又因求解存在一定的困难,其困难就在于绝对值的存在,应设法化去绝对值,所以在所要求拟合的曲线函数形式简单的前提下,将问题转化为了线性规划的求解问题。对于问题三,拟合题中所给数据的直线y?bx?a,目标为使y的各个观察值同按直线关系所预期的值的最大偏差为最小。对于要在拟合准则最大偏差为最小的情况下拟合曲线,可以在第二问的基础上加以改进,继续采用线性规划模型,并利用Lingo编程进行问题的求解。对于问题四,拟合题中所给数据的曲线y?cx2?bx?a,分别实现问题一、问题二、问题三中的三种目标。针对这一问题,只需将前三问中的原理加以改进,将原理中的线性部分转化为非线性部分,即可对该问进行求解。对于问题五,因为前三问要求拟合的都是直线,第四问要求拟合的是二次曲线,拟合完后发现均呈现函数值与观测值都存在一定的偏差,说明拟合的曲线并非是关于y量和x量的最佳拟合曲线。故而可以重新观察散点图的图像特点,充分考虑之前拟合包含各类专业文献、文学作品欣赏、专业论文、中学教育、生活休闲娱乐、高等教育、各类资格考试、matlab曲线拟合问题分析24等内容。 
 第六章 MATLAB解曲线拟合问题_自然科学_专业资料。MATLAB今日推荐 50...matlab曲线拟合工具 2页 免费 基于MATLAB曲线拟合的应... 4页 免费喜欢...  对于数据的曲线拟合问题, Matlab 为用户提供了多种线性与非线性拟合方法, 包 括拟合函数与工具箱,用户还能根据自己的需要进行编程。利用 Matlab 能快速、 准确地...  基于MATLAB的不同曲线拟合方式的比较研究 毕业论文_理学_高等教育_教育专区。MATLAB...最后结合具体问题 和曲线拟合各个要素从中选择最优拟合方式。 关键词:MATLAB; ...  4. 利用曲线拟合工具箱提高曲线拟合结果 5. 其他的相关资料 第 1 节: 简介 MATLAB 即有内建的解决很多通常遇到的曲线拟合问题的能力, 又具有附加这方面的产品...  f ( x) 的方法很多,本文针对最小二乘曲线拟 合的有关问题以及相应的MATLAB实现进行探讨。 1. 最小二乘曲线拟合最小二乘曲线拟合方法:根据给定的实验数据 ( ...  《课程名称》实验报告 实验名称:___曲线拟合__ 成绩:___ 一、实验目的 熟悉数学软件 Matlab 进行曲线拟合分析 二、实验内容 1、熟悉曲线拟合问题 2、熟悉 plot...  matlab 曲线拟合( 22:47:37) 标签:it MATLAB 软件提供了基本的...(p,data)的 M 函数文件, 表示函数的初值. p0 curvefit()命令的求解 问题...  spss曲线拟合与matlab回归分析_经济学_高等教育_教育专区。数学建模必备。...解:这个问题可以看做是一个排队的例子,用MATLAP求解程序如下所示: function ...  MATLAB软件基本的曲线拟合函数命令_计算机软件及应用_IT/计算机_专业资料。MATLAB ...'o',x1,x2,myfun(a,x)) % 值的选取没有定法,与实际问题的模型有关。 ...求教MATLAB指数拟合问题:指数拟合y=a(exp(bx)-1),要求精度高一些,画出原始数据和拟合曲线的重合情况。x=[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4._百度作业帮
求教MATLAB指数拟合问题:指数拟合y=a(exp(bx)-1),要求精度高一些,画出原始数据和拟合曲线的重合情况。x=[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.
求教MATLAB指数拟合问题:指数拟合y=a(exp(bx)-1),要求精度高一些,画出原始数据和拟合曲线的重合情况。x=[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 ],y=[5...............................0623E-3]
% 原始数据x=[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 ];;y=[5.....141...
这个要用非线性拟合,我尝试了一些这个函数的优化设置,但效果没有提升,好像只能拟合到这个精度了,你试试吧:% 建立一个shiyan1.m文件,运行以下代码function shiyan1x=[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 ];y=[5...............................0623E-3] ;a0 = [ 1, 1 ];% 随便给个初值[ a, resnorm ] = lsqcurvefit( @subfun, a0, x, y )yy = a( 1 ) * ( exp( a( 2 ) * x ) - 1 );figure( 1 );plot( x, y, 'r*' );plot( x, yy, 'b-' );legend( '原始数据', '拟合曲线' );function y = subfun( a, x )y = a( 1 ) * ( exp( a( 2 ) * x ) - 1 );
你好,这是我的解答,希望对你有帮助,哪里有疑问请追问,若满意还望采纳,祝生活愉快!代码:clcsyms K1 K2;&x=[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 ];&y=[5...........2699E-3...& & &1...........3293E-3...& & &23.........0623E-3];fun=inline('a(1).*(exp(a(2).*x)-1)','a','x');%输入函数表达式a=lsqcurvefit(fun,[0.01 1],x,y)%拟合,并给定初始值plot(x,y,'r')hold on&grid onz=a(1).*(exp(a(2).*x)-1);plot(x,z,'b')legend('红色原来数据曲线','蓝色拟合数据曲线')输出结果:a =& & 0.0001 & &1.2818即a=a(1)=0.0001,b=a(2)=1.2818
拟合问题和很多因素有关,包括拟合函数的形式、优化算法、初值等。&对于楼主给的数据而言,指数函数似乎并非一个好的选择。从下图可以看到,四次多项式拟合的效果要比指数拟合效果好很多。事实上,即使用二次多项式(抛物线)拟合,也比指数拟合的效果要好。所以,建议楼主重新考虑一下拟合函数的形式,如果允许,可尝试采用多项式拟合。&参考代码x=[2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 4.8 4.9 5.0 ];y=[5...............................0623E-3];f = @(c,x) c(1)*(exp(c(2)*x)-1);x0 = [1 1];c=lsqcurvefit(f,x0,x,y)y1 = f(c,x);p = polyfit(x,y,4);y2 = polyval(p,x);plot(x,y,'ro',x,y1,'.-',x,y2,'-x')r1 = norm(y-y1);r2 = norm(y-y2);legend('原始数据', ['指数拟合, 残差范数=' num2str(r1)],['4次多项式拟合,残差范数=' num2str(r2)],2)

我要回帖

更多关于 matlab四维散乱点拟合 的文章

 

随机推荐