查看: 20047|回复: 16|关注: 0

[已答复] 两个自变量的曲线拟合怎么实现

[复制链接]

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
发表于 2014-6-26 14:58:09 | 显示全部楼层 |阅读模式
函数z=f(x,y),已知七组x,y,z的数据(0.01,0.06,9.2);(0.04,0.12,1.5);(0.07,0.04,2.3);(0.1,0.1,2.5);(0.13,0.02,11);(0.16,0.08,9);(0,0,386.1),想依据这七组数据拟合出函数z=f(x,y)的曲线及函数表达式。如何用MATLAB实现。能否给出具体的程序。谢谢!

论坛优秀回答者

高级

1839 麦片

财富积分


15002000


6

主题

1146

帖子

225

最佳答案
  • 关注者: 17
发表于 2014-6-26 15:23:49 | 显示全部楼层
看你要拟合成什么形式,或者用sqcurvefit(非线性最小二乘法)和nlinfit等函数

论坛优秀回答者

中级

1074 麦片

财富积分


5001500


0

主题

2618

帖子

233

最佳答案
  • 关注者: 153
发表于 2014-6-26 15:25:34 | 显示全部楼层
最后一个点:(0,0,386.1)差别很大,确认无误?

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2014-6-27 11:09:02 | 显示全部楼层
shihe 发表于 2014-6-26 15:25
最后一个点:(0,0,386.1)差别很大,确认无误?

无误,最后一组数就是这个样子的。

MATLAB 基础讨论
版块优秀回答者

入门

208 麦片

财富积分


50500


30

主题

333

帖子

36

最佳答案
  • 关注者: 14
发表于 2014-6-27 11:59:41 | 显示全部楼层
建议使用曲线拟合工具箱,对于拟合的结果可以绘制残差图进行分析。

论坛优秀回答者

中级

1074 麦片

财富积分


5001500


0

主题

2618

帖子

233

最佳答案
  • 关注者: 153
发表于 2014-6-27 14:33:55 | 显示全部楼层
那就试试下面的公式:

z = p1*x^(p2*y)+p3;

均方差(RMSE):2.91351940743846
残差平方和(SSE):59.4201673626437
相关系数(R): 0.999760337643943
相关系数之平方(R^2): 0.99952073272593
确定系数(DC): 0.99952073272593
卡方系数(Chi-Square): 6.04885498243159
F统计(F-Statistic): 4173.03685898599

参数        最佳估算
----------        -------------
p1        381.20000773721
p2        101.372430256716
p3        4.90007547966922
c1.jpg

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2014-8-7 09:29:05 | 显示全部楼层
补充内容: 函数表达式应为Z=ax+by+cxy+dx*X+ey*y。看看用什么办法处理。我是想得到做这个题目的具体过程是什么样的,我是个初学者,以前只弄过一个自变量的数据拟合。对于多变量的真的是不会呀。看了网上的视频和各位的回答还是不太明白。所以,希望能给个详细的解答过程。十分感谢!

入门

101 麦片

财富积分


50500


18

主题

198

帖子

13

最佳答案
  • 关注者: 5
发表于 2014-8-7 10:54:24 | 显示全部楼层
lyj418300 发表于 2014-8-7 09:29
补充内容: 函数表达式应为Z=ax+by+cxy+dx*X+ey*y。看看用什么办法处理。我是想得到做这个题目的具体过程是 ...

对于你这种已经给出表达式的,Matlab有很多函数可以来实现的,大部分都是用最小二乘的方法来求解(其实这种方法还可以用来求解最优化问题。对于你给的表达式因为没有常数项,我觉得用lsqcurvefit,nlinfit比较合适
lsqcurvefit调用方法:c=lsqcurvefit(@fun,x0,xdata,ydata)
其中fun是你定义的函数模型,你可以在程序下方来这样定义:
  1. function f=fun(coef,x)
  2. f=coef(1)*x(:,1)+coef(2)*x(:,2)+coef(3)*x(:,1).*x(:,2)+coef(4)*x(:,1).^2+coef(5)*x(:,2).^2;
复制代码
x0是你拟合的初始值,你可以这样设定rand(1,5)
xdata,ydata,分别为你观测值每一组观测值要写成列向量的形式

新手

5 麦片

财富积分


050


1

主题

7

帖子

0

最佳答案
 楼主| 发表于 2014-8-29 18:12:59 | 显示全部楼层
dylanwang 发表于 2014-8-7 10:54
对于你这种已经给出表达式的,Matlab有很多函数可以来实现的,大部分都是用最小二乘的方法来求解(其实这 ...

继续请教,我先写的那个表达式写错了,应该是后面要加上一个常数项的。您再帮忙指导一下。多谢!我给疏忽了漏掉了常数项。

入门

101 麦片

财富积分


50500


18

主题

198

帖子

13

最佳答案
  • 关注者: 5
发表于 2014-8-30 15:34:22 | 显示全部楼层
lyj418300 发表于 2014-8-29 18:12
继续请教,我先写的那个表达式写错了,应该是后面要加上一个常数项的。您再帮忙指导一下。多谢!我给疏忽 ...

常数项需要拟合,还是已知值?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表