如何有效地从3D数组中提取元素?

时间:2015-09-15 11:40:21

标签: matlab indexing

我们说G = [1,2;3,4]G(:,:,2) = [11, 22; 33, 44]

我想输出[1,11]。即一个命令中G(:,:,1)G(:,:,2)的[1,1]个元素。

我尝试使用G(1,1,[1 2]),但它提供了以下输出

ans(:,:,1) =

     1
ans(:,:,2) =

    11

但我希望以这种形式输出,即在一个数组[1 ; 11]中。

3 个答案:

答案 0 :(得分:4)

请参阅squeeze以删除单身尺寸:

G = [1,2;3,4];
G(:,:,2) = [11, 22; 33, 44];

A = G(1,1,[1 2]);
A = squeeze(A);

返回

A =

     1
    11

答案 1 :(得分:2)

您可以通过reshaping矩阵轻松解决您所需的正确格式问题。

>> reshape(G(1, 1, :), length(G(1, 1, :)), 1)

ans =

     1
    11

只是因为你没有意识到,在矩阵:中可以用来表示该维度上的每个元素,从而节省你的工作。

答案 2 :(得分:2)

另外,

G(1:size(G,1)*size(G,2):end)

使用linear indexing并直接给出一个向量。