使用MATLAB(X,Y,Z,V)在3D绘图中需要帮助

时间:2014-04-06 14:52:12

标签: matlab 3d plot volume imaging

我需要帮助在MATLAB中绘制3D体积。我的数据集包括X,Y,Z坐标和相应的强度值V

当我正在制作2D图像时,我正在使用pcolor(X,Y,V)和阴影interp但是当我即将创建3D图像时我陷入困境。我尝试过scatter3,smooth3和slice,但它似乎不适合我需要的功能。

我的目标是使用每个坐标的相应强度值绘制3D网格,并在这些点之间应用着色间隔。

我是3D绘图的新手,我真的很感激帮助我实现目标。非常感谢你!

以下是我尝试创建的一些图片示例 link http://www.ndt.net/article/ndtce03/papers/v073/fig11.jpg link http://www.bam.de/de/_pic_u_film/web/kompetenzen/abteilung_8/fg82/fg82_fotos/fg82_fusion_pk_270.jpg

1 个答案:

答案 0 :(得分:1)

我为您的第一个示例提供了一个解决方案,其中显示了卷数据的三个横截面。使用此解决方案,您可以在一个相同的3D图中基本上绘制具有不同方向的多个pcolor。

首先,您需要不同切片的数据。这正是你用pcolor(X,Y,V)绘制2D横截面时的情况,其中X,Y和V是二维矩阵。您还需要创建具有切片的z位置的矩阵Z(例如,Z =零(大小(X))+ z0)。然后使用命令面(X,Y,Z,V)在3D中绘制横截面图像,其中X,Y,Z是位置,V是颜色(函数的值)。

对每个切片使用适当的X,Y,Z,V矩阵对所有其他切片重复此过程。对于面向其他轴的切片,您必须相应地定义X,Y,Z。请记住在第一个曲面命令后使用“保持”,以便绘制所有切片。

示例:

surface(X1,Y1,Z1,V1); shading interp; hold on
surface(X2,Y2,Z2,V2); shading interp;
surface(X3,Y3,Z3,V3); shading interp;

colormap(jet(2048)); caxis([0,3]); % color axis colormap and scaling

axis equal; xlabel('X'); ylabel('Y'); zlabel('Z') % X,Y,Z scaling and label

结果图:

enter image description here