Octave:绘制 3D 插值结果
Octave: Plotting results of 3D interpolation
我想绘制一个表面,其高程是对散点数据进行 3D 插值的结果:
我在三个列向量中有坐标 x、y、z 和标量值 v。我想在坐标为 xi、yi、zi 的常量 x 平面上插值 v,获得 vi 并最终绘制曲面 (yi、zi、vi)。
我该怎么做?
这是我找到的解决方案,感谢 #octave irc 频道上的 andy1978 和 Nicola:
x1 = linspace (min(x),max(x),50) ;
y1 = linspace (min(y),max(y),50) ;
z1 = linspace (min(z),max(z),50) ;
[xx, yy, zz] = meshgrid (x1, y1, z1) ;
vv = griddata3 (x, y, z, v, xx, yy, zz ) ;
x0 = 0.05 ; % constant x of chosen plane
[~,i] = min (abs (x - x0)) ;
vv_sect = vv (:, i, :) ; % here I slice the matrix of interpolated results at x=x0
vv_out = squeeze (vv_sect) ; % and this is what I needed to reduce the dimensionality of
% the sliced matrix
[yy2,zz2] = meshgrid (y1, z1) ;
surf (yy2, zz2, vv_out ) ;
我想绘制一个表面,其高程是对散点数据进行 3D 插值的结果: 我在三个列向量中有坐标 x、y、z 和标量值 v。我想在坐标为 xi、yi、zi 的常量 x 平面上插值 v,获得 vi 并最终绘制曲面 (yi、zi、vi)。 我该怎么做?
这是我找到的解决方案,感谢 #octave irc 频道上的 andy1978 和 Nicola:
x1 = linspace (min(x),max(x),50) ;
y1 = linspace (min(y),max(y),50) ;
z1 = linspace (min(z),max(z),50) ;
[xx, yy, zz] = meshgrid (x1, y1, z1) ;
vv = griddata3 (x, y, z, v, xx, yy, zz ) ;
x0 = 0.05 ; % constant x of chosen plane
[~,i] = min (abs (x - x0)) ;
vv_sect = vv (:, i, :) ; % here I slice the matrix of interpolated results at x=x0
vv_out = squeeze (vv_sect) ; % and this is what I needed to reduce the dimensionality of
% the sliced matrix
[yy2,zz2] = meshgrid (y1, z1) ;
surf (yy2, zz2, vv_out ) ;