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

3
如果我有一个三维矩阵X,它的大小为4 x 10 x 50
这个矩阵包含了在第一维中位置和速度信息,在第二维中不同粒子(或船只等)的索引信息,最后是粒子运动的不同时刻在第三维中的信息。也许这并不那么重要,但可能可以澄清我的问题。
假设我想绘制在前两个维度上特定索引的X值在第三个维度上的变化。
>> plot(X(1,1,:))
Error using plot
Data may not have more than 2 dimensions

尽管提供的值是一维的,但我不能在此处使用 plot,因为它们被分别给出,就像这样:

>> 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, :)的结果转化为向量?

class(X) 的答案是 double - while
2个回答

3
使用 X( 1, 1, : ) 索引返回一个三维矩阵。但是,plot 函数要求输入为向量或二维矩阵。要将 X( 1, 1, : ) 转换为向量,需要移除单例维度。内置函数 squeeze 可以实现此操作。
尝试:
X2 = squeeze( X( 1, 1, : ) );
plot( X2 )

1

你现在的索引方式实际上得到了一个二维向量。所以size(A(:,:,1)实际上是4x10

要绘制它,请使用Matlab的squeeze运算符。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接