首页 > 解决方案 > 使用 imagesc() 绘制 3D 矩阵的对角线切片

问题描述

我是 Matlab 新手,我真的需要帮助解决以下问题:

我有一个 255 x 255 x 255 矩阵,我想用 imagesc() 绘制它的二维切片。

我知道,为了绘制与 x、y、z 平面平行的切片,我可以只用矩阵(:,:,i)之类的东西指定切片,但是如果我想绘制 x = y 切片,我该怎么做,或者通常任何 x = n*y 切片?

我在想的是将矩阵插值到这些平面上,然后提取切片,但我有点不知道如何做。

特别是对于 x = y 切片,我一直在尝试通过对每个 z 切片使用 diag() 命令并为 i=1:255 设置 new_matrix = matrix(i,i,:) 来构建二维矩阵,但是这似乎不起作用。

标签: matlabmatrix

解决方案


因为 Matlab 给了你slice

[X,Y,Z] = meshgrid(-5:0.2:5);
V = X.*exp(-X.^2-Y.^2-Z.^2);

[xsurf,ysurf] = meshgrid(-2:0.2:2);
zsurf = xsurf/2+ysurf/2;
slice(X,Y,Z,V,xsurf,ysurf,zsurf)

在此处输入图像描述

您可以使用摄像机view角度来模拟imagesc感觉,例如view(0, 90)在我编写的代码之后尝试...

顺便说一句...如果您坚持按照您想要的方式进行剪辑和使用 imagesc,这就是我给出的示例:

for n=1:size(X,1)
    D(:,n)=squeeze(V(n,n,:));
end
imagesc(D)

推荐阅读