三次样条插值怎么插值三维数据? 有源程序么、?
追答matlab 没源程序,用简单的脚本。你若有Curve Fitting ToolBox,自己做。
样条函数未必是三次。一般是参数方程,通过两个节点,不通过另2个点,每4点为一段。应当是很简单的程序。
假设我有一组数据x,y,z,然后做插值,应该怎么做?有样本程序么?没有Curve Fitting ToolBox。
追答最简单的是线性插值。
假定z=f(x,y)。例如:x,y 是到原点距离(东西向,南北向)。z 是高程。
根据已知点[x,y,z] 计算出 x_min,x_max,y_min,y_max. 选择 dx,dy, 建立平面网格。
把x,y 点的值,移到最近的格点,(多于1点时,格点值用点数的平均值)。
沿x,y格子线扫描,线性内插出没值的格点的值。
然后循环计算插值点xi,yi的zi: (xi-x0)/dx, (yi-y0)/dy 求出点落在哪个小格内,用4个格点线性内插出zi.
----
另一种方法,是建三角形网格,用软件 trigrid 或别的软件,也可以用 matlab.点不多用手工也可。
然后循环计算插值点xi,yi的zi: 判断点落在哪个3角形内,然后用3角形"面积坐标“作线性内插。
(3角形面积等于两边的矢量叉乘积除以2,很好算)
---
上面的基本原理:前者是有限差分法,后者是有限单元法。
线性插值做出的曲线没样条光滑。
追答你到底问的是空间曲线还是空间曲面?你是插值还是拟合?点子有多少?你用matlab 还是要编c/c++程序,我都给你问糊涂了。
画空间曲线,你用 3D B-Spline 就可以了。参数方程,写出来后,愿怎么插都可以。
(B-Spline 通过两个节点,不通过另2个点,每4点为一段。应当是很简单的程序。)
B 样条函数公式 查一下 百度文库便可。
画空间曲线啊 ,恩 正在研究。
本回答被提问者采纳