我需要帮助在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
答案 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
结果图: