matlab三维插值,已知一系列三维数据点,怎么插值成一条光滑曲线,有源程序最好。

如题所述

第1个回答  2013-05-25
用 fitting. 3维 需要 Curve Fitting ToolBox. 修匀,插值 都在 那里面。我没有买这个 工具箱,所以帮不上忙。用 plot3 画曲线,在菜单里会有 fitting 选项。进入。把屏幕上操作记下来就是matlab程序。撇开matlab,三维数据点,绘成光滑曲线,方法很多,例如样条函数。追问

三次样条插值怎么插值三维数据? 有源程序么、?

追答

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 样条函数公式 查一下 百度文库便可。

追问

画空间曲线啊 ,恩 正在研究。

本回答被提问者采纳
相似回答