bainhome 发表于 2009-4-8 21:02:24

MATLAB2009a的surface fitting tool(拟合/多维/三维/多元/曲面)

本帖最后由 messenger 于 2010-4-14 10:03 编辑

今天终于装了个7.8,小爽了一把...
大多数人应该已经知道:在这个版本中终于有了曲面拟合工具,而且支持GUI界面,应该说比较傻瓜化了。
在command windows中输入sftool进入界面即可。只要输入离散空间点的x、y和z向量坐标值即可进行拟合。选项很多,还没仔细看,只看到有插值、自定义方程等四种拟合选项,群众比较喜欢的“save to workspace”选项在菜单fit下,在sftool中生成的图形如果看着爽可以用file→generate M-Code选项生成代码,然后再执行一遍,图形就下来了。不过要注意的是原始数据x、y和z必须是列向量才可以,行向量会提示出错。如果利用公式进行拟合,最终的拟合系数会在生成的M-Code中出现一个名为fitresult的sfit格式数据,不爽的是这个数据不能在workspace中双击打开,但是可以在command windows中输入fitresult看到。
ps:没看错的化,它的算法应该就是信赖域法和马夸特法两种,另外好像也是用随机初值,这倒是个很好的开始。
暂时就这些了,因为是傻瓜化的工具很简单,所以没有用图说明。

taohe 发表于 2009-4-9 10:56:51

还没有看到传说中的matlab 让009a里,已经在论坛上看到几个介绍的帖子,心痒并期待中。

关于这个sftool,曲面的外插效果好吗?或者,从算法上面讲,那种方法在曲面的插值或者拟合的情况下,能够很好的保持数据的趋势?

bainhome 发表于 2009-4-9 11:23:48

本帖最后由 bainhome 于 2009-4-9 11:28 编辑

因为刚刚装上,所以昨天也只看了一会儿,只是个初步的观感,未必准确。不过昨天我试的是如下数据:x1=rand(25,1);y1=round(10*rand(25,1));
z1=x1.^rand()+y1.^sin(rand());采用interpolant,有四种方法,大家可能都比较熟悉:linear、cubic、nearest和biharmonic(v4),最后一种似乎对多数插值拟合效果相对更好。我就采用了这种方法,得到如下图形:

另外还有一事现在我也不大明白,就是它图形中插值网格疏密如何确定的,毕竟这里好像没有meshgrid,这个还在研究中。
如下图所示,其他的选项也比较清楚:

自定义方程选项选中后,初值随机给定,在fit option中。

不过因为刚拿到,暂时还没有想到用什么好的题目去测试,只是单纯熟悉功能了。

taohe 发表于 2009-4-9 13:37:49

看效果不错。还没有用过这个工具,有空的时候试试看。

这种插值结果看起来有点像根据稀疏的数据点,产生一个用规则的格子描述的连续的曲面。或者就是一种“gridding”的过程。

我对gridding的算法比较感兴趣,看到过一种叫做“Minimum Curvature”的方法似乎不错。不知这里哪位大侠能够讲讲这方面比较好的算法。

xiezhh 发表于 2009-4-9 21:03:04

听你们这么一说,我也心痒痒了,我是搞统计的(像这种问题我一般用SAS软件做),我对这个sftool还是比较有兴趣的,可惜我有点落后于时代,现在还在用2008a。

zhy1322 发表于 2010-4-15 12:56:14

1# bainhome
太感谢啦!内牛满面:handshake
页: [1]
查看完整版本: MATLAB2009a的surface fitting tool(拟合/多维/三维/多元/曲面)