找回密码
 注册
Simdroid-非首页
查看: 117|回复: 6

matlab插值之griddedInterpolant 类和scatteredInterpolant 类

[复制链接]
发表于 2013-9-18 15:38:55 | 显示全部楼层 |阅读模式 来自 北京
matlab提供的高效快捷插值类griddedInterpolant以及scatteredInterpolant(version》2012)

1、对于网格点的插值计算------griddedInterpolant
  1. [x,y,z,v] = flow;
  2. P = [2 1 3];
  3. X = permute(x, P);
  4. Y = permute(y, P);
  5. Z = permute(z, P);
  6. V = permute(v, P);

  7. F=griddedInterpolant
  8. F.GridVectors={X(:,1,1),Y(1,:,1),Z(1,1,:)}
  9. F.Values=V
  10. F.Method = 'linear'
  11. F.ExtrapolationMethod = 'none'           %外插可设置为线性或者无
  12. data = F(X,Y,Z);                                  % XYZ可以是向量也可以是二、三维数组
复制代码
再来一个简单的例子:
  1. F=griddedInterpolant
  2. F.GridVectors={1:10,1:10,1:10,1:10}
  3. F.Values=randn(10,10,10,10)
  4. F.Method = 'linear'
  5. F.ExtrapolationMethod = 'none'
  6. data = F(1,2,3,6)
复制代码
至于scatteredInterpolant就更简单了
  1. F = scatteredInterpolant(randn(100,3),randn(100,1));  %randn(100,3)表示xyz
  2. F(.2,.5,.4)       % 就实现了插值
复制代码

评分

1

查看全部评分

发表于 2013-9-29 11:40:13 | 显示全部楼层 来自 加拿大
Simdroid开发平台
本帖最后由 winner245 于 2013-9-29 11:41 编辑

matlab的插值函数很多,楼主列出的这两个是最后推出的,取代了之前的 TriScatteredInterp (TriScatteredInterp 在2013b中已经被删除了)。不过,奇怪的是,matlab还保留着 griddata 和 griddatan 两个函数,而且没说在将来的新版本中 remove,我很不解的是,matlab为何还要保留 griddata 和 griddatan?很明显,scatteredInterpolant 比 griddata 更强大,griddedInterpolant 也比 griddatan 更强大,而且,当我在 2012b 里使用 griddata 时,会提示我用 TriScatteredInterp 代替 griddata 以得到更高的效率。这说明,TriScatteredInterp 应该是比 griddata 强的,那么,为何在TriScatteredInterp 都被删除的情况下, 却保留了 griddata 和 griddatan ?

另外,还想请教一下楼主,是否跟 interp1, interp2, interp3, interpn 这些比较过效率?这些也可以分别实现 1 维到任意 n 维的内插,所不同的是,他们是直接给出内插数据,而上面的 scatteredInterpolant 和 griddedInterpolant  是给出内插式(interpolant),后者使用更方便。
回复 不支持

使用道具 举报

 楼主| 发表于 2013-9-29 17:38:14 | 显示全部楼层 来自 北京
winner245 发表于 2013-9-29 11:40
matlab的插值函数很多,楼主列出的这两个是最后推出的,取代了之前的 TriScatteredInterp (TriScatteredIn ...

将来 griddata 和 griddatan应该会被移除,griddata在help中已经注明了,griddatan个人也觉得会被删除,同时,ndgrid也应该会代替meshgrid(个人觉得,ndgrid更符合使用习惯),

至于他们之间的比较,虽然interp系列和griddedInterpolant 都可以进行N—D插值,但griddedInterpolant 在内存与运算性能而言要好于interp系列,并且只提供一个函数形式,要比interp系列更为方便

点评

scatteredInterpolant貌似矩阵不能。帮小伙伴做普通二维插值,顺手向刘总偷学griddedInterpolant,这个命令果然能够为广大群众所喜爱...  发表于 2014-5-19 11:41
回复 不支持

使用道具 举报

发表于 2013-9-29 21:45:08 | 显示全部楼层 来自 加拿大
liuyalong008 发表于 2013-9-29 17:38
将来 griddata 和 griddatan应该会被移除,griddata在help中已经注明了,griddatan个人也觉得会被删除, ...

多谢答复!我也认为 griddata 和 griddatan 会被移除,可是,我没有看到 hlep 里明确提及这一点。在help里我只看到了这么一句:Note: The syntax for implicit meshgrid expansion of (xq, yq) will be  removed in a future release. 但这只是说一个用法会被移除。请问你是看到的明确的提示说整个函数将会被移除吗?纯属好奇一问

点评

sorry,关于remove是一时眼误,是否剔除是个人感觉吧,  发表于 2013-9-30 09:13
回复 不支持

使用道具 举报

发表于 2014-5-10 00:04:41 | 显示全部楼层 来自 上海
对于相同时间间隔对应的数据点,大家交流下是否有较快的方法进行抛物线插值,具体是:
顺次相邻的三个点,需要在这三个点之间进行抛物线插值即 f(x)=a2*x^2+a1*x+a0,使得原先稀疏的数据点加密,
目前采用的方法迭代效率较低,在数据量大的情况下,使用循环不大可取,看看有高人提出妙解否

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-7-3 07:59 , Processed in 0.042649 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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