在MATLAB / Octave中绘制一个3D矩阵切片的值

时间:2013-01-17 17:04:55

标签: matlab matrix 3d

如果我有一个3D矩阵,X4 x 10 x 50

矩阵由第一维中的位置和速度,第二维中的不同粒子(或船或任何)指数组成,最后是第三维中粒子运动的不同时间步长。也许不那么重要但也许它澄清了我的问题。

假设我想在第3维度的前两个维度中为特定指数绘制X的值

>> plot(X(1,1,:))
Error using plot
Data may not have more than 2 dimensions

即使提供的值是一维的,我也不能在这里使用绘图,因为它们是这样单独给出的:

>> X(1,1,1:5)

ans(:,:,1) =
10

ans(:,:,2) =
11.4426

ans(:,:,3) =
12.5169

ans(:,:,4) =
13.7492

ans(:,:,5) =
14.9430

如何将X( 1, 1, :)的结果转换为矢量?

2 个答案:

答案 0 :(得分:2)

使用X索引到X( 1, 1, : )会返回一个3D矩阵。但是,plot要求其输入为矢量或2D矩阵。要将X( 1, 1, : )转换为矢量,您需要删除单例维度。 builtin function squeeze执行此操作:

尝试:

X2 = squeeze( X( 1, 1, : ) );
plot( X2 )

答案 1 :(得分:1)

您索引它的方式实际上产生了一个二维向量。所以size(A(:,:,1)实际上是4x10

要绘制它,请使用Matlab的挤压算子

plot(squeeze(X(:,:,1))