[英]How can I interpolate points in 3D space?
我有3D空间。 而且我知道例如这个空间中的N
个点(x1,y1,z1)
, (x2,y2,z2)
..., (xn,yn,zn)
。 我想谈谈要点,这与此有所不同。 如何在Matlab中做到这一点?
interp3
可能会帮助您。 这是文档。
与往常一样,您的一线查询仍然有未回答的问题。
如果数据的形式是存在函数关系z(x,y)
,(或y(x,z)
或x(y,z)
),则您可能可以使用一种插值工具。 因此,假设您有数据位于(x,y)
平面中的晶格上,因此该晶格中每个点的z
值都相同。 在这种情况下,您可以使用interp2
。
或者,如果数据分散,但是您没有某些单值函数关系z(x,y)
,但它是一些连续函数。 无限的一阶导数在这里也是一个问题。 在这种情况下,假设您拥有至少填充(x,y)
平面中某些凸域的数据,您仍然可以插值z
。 为此,请使用griddata或TriScatteredInterp。 或者您可以使用我自己的gridfit工具,如在文件交换中找到的那样。
接下来,以您描述数据的方式,我一点也不肯定您具有上述形式之一。 例如,如果您的数据沿着该3D域中的某个弯曲路径放置,并且您希望使用我的interparc工具(也可以在文件交换中找到)沿该弧形插值点。
人们在谈论像这样的空间集的插值时似乎经常遇到的最后一种情况只是一个普通表面,他们希望构建一个整齐插值的平滑表面。 它可能像球体表面一样简单,也可能更复杂。 (这些事情从来都不是简单的。)为此,如果它是封闭的凸面,则可以使用凸包来近似。 更复杂的表面可能需要CRUST之类的工具,尽管我没有为您提供的工具。 如果您需要的话,Google会为您提供帮助。
所有这些的关键是,如何对数据进行插值取决于数据的形式,其表示的形式以及将要插值的关系的形状。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.