ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

slice

容積測定スライス プロット

構文

slice(V,sx,sy,sz)
slice(X,Y,Z,V,sx,sy,sz)
slice(V,XI,YI,ZI)
slice(X,Y,Z,V,XI,YI,ZI)
slice(...,'method')
slice(axes_handle,...)
h = slice(...)

説明

関数 slice は、3 次元データと直交する断面を表示します。

slice(V,sx,sy,sz) は、ベクトル sxsysz 内の点で示される体積 V の断面を xyz 方向に沿って描画します。V は、m x n x p の体積配列で、既定の位置 X = 1:n, Y = 1:m, Z = 1:p でのデータを含んでいます。ベクトル sxsysz の各要素は、xyz 軸方向の断面を定義します。

slice(X,Y,Z,V,sx,sy,sz) は、体積 V の断面を描画します。XYZ は、V の座標を指定する 3 次元配列です。XYZ は、単調で、直交空間でなければなりません (たとえば、関数 meshgrid で作成されます)。各点の色は、体積 V への 3 次元内挿によって決定されます。

slice(V,XI,YI,ZI) は、XIYI、および ZI で定義される断面の体積 V のデータを描画します。XIYIZI は、表面を定義する行列で、体積は表面の点で計算されます。XIYIZI は、同じサイズでなければなりません。

slice(X,Y,Z,V,XI,YI,ZI) は、配列 XIYIZI で定義される面に沿って体積 V の断面を描画します。

slice(...,'method') は、内挿法を指定します。'method' には 'linear''cubic'、または 'nearest' を指定します。

  • linear は、三重線形内挿を指定します (既定の設定)。

  • cubic は、三重 3 次内挿を指定します。

  • nearest は、最近傍点による内挿を指定します。

slice(axes_handle,...) は、現在の Axes オブジェクト (関数 gca) ではなく、ハンドル axes_handle をもつ Axes にプロットします。Axes の clim プロパティは、V の有限値に拡張されます。

h = slice(...) は、surface グラフィックス オブジェクトのハンドルのベクトルを返します。

関数

v=xe(x2y2z2)

を、範囲 –2 ≤ x ≤ 2, –2 ≤y ≤2, – 2 ≤ z ≤2 で可視化します。

[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
xslice = [-1.2,.8,2]; 
yslice = 2; 
zslice = [-2,0];
slice(x,y,z,v,xslice,yslice,zslice)
colormap hsv

任意の角度での断面の作成

任意の平面内で方向をもつ断面を作成できます。以下を行います。

  • 体積の定義域でスライスの表面を作成します (surflinspace)。

  • Axes を基準にしてこの表面の方向を設定します (rotate)。

  • 表面の XDataYDataZData を取得します。

  • このデータを使って、3 次元で断面を描画します。

たとえば、次のステートメントは、回転平面を使って、上記の例に断面を描画します。このコマンドを for ループ内に配置すると、z 軸に沿った体積内の断面を描画します。

[x,y,z] = meshgrid(-2:.2:2,-2:.25:2,-2:.16:2);
v = x.*exp(-x.^2-y.^2-z.^2);
figure
colormap hsv
for k = -2:.05:2
   hsp = surf(linspace(-2,2,20),linspace(-2,2,20),...
      zeros(20) + k);
   rotate(hsp,[1,-1,1],30)
   xd = hsp.XData;
   yd = hsp.YData;
   zd = hsp.ZData;
   delete(hsp)
   
   slice(x,y,z,v,[-2,2],2,-2) % Draw some volume boundaries
   hold on
   slice(x,y,z,v,xd,yd,zd)
   hold off
   view(-5,10)
   axis([-2.5 2.5 -2 2 -2 4])
   drawnow
end

次の図は、同じ断面が 3 つの位置で物体を横切ることを示しています。

非平面表面の断面

任意の表面を使って体積の断面を作成できます。この例は、物体を通る球面の断面を設定して、前の例で作成された物体を調べます。

[xsp,ysp,zsp] = sphere;
slice(x,y,z,v,[-2,2],2,-2)
colormap hsv
for i = -3:.2:3
   hsp = surface(xsp+i,ysp,zsp);
   rotate(hsp,[1 0 0],90)
   xd = hsp.XData;
   yd = hsp.YData;
   zd = hsp.ZData;
   delete(hsp)
   hold on
   hslicer = slice(x,y,z,v,xd,yd,zd);
   axis tight 
   xlim([-3,3])
   view(-10,35)
   drawnow
   delete(hslicer)
   hold off
end

次の図は、球面が 3 つの位置で物体を横切ることを示しています。

参考

|

この情報は役に立ちましたか?