你如何在n维矩阵中选出第i个矩阵?

时间:2014-01-27 15:58:46

标签: matlab

为了论证,让我说我有这个3 x 3 x 2矩阵:

A = [5 7 8; 0 1 9; 4 3 6];
A(:,:,2) = [1 0 4; 3 5 6; 9 8 7];

我想挑出第一个矩阵(尺寸:3 x 3 x 1),我该怎么做?

1 个答案:

答案 0 :(得分:4)

评论中的简短回答是:

A(:,:,1)

更长的答案:

您可以通过简单地指定每个维度所需的元素来选择矩阵的任何(超)矩形子集,天气中阵列中有1,2,3,4或更多维度。简而言之:

  1. 按顺序指定每个维度。尺寸1指定行,尺寸2指定列,尺寸3和尺寸通常不可视化,因此只需重复3和更高

  2. 对于每个维度,您可以指定以下内容之一:a)单个索引号,b)索引号的向量,或c)与您从d中选择的维度长度相同的逻辑向量:,代表此维度中的所有元素。

  3. 每个维度说明符与AND编号在一起,从而产生(超)矩形阵列。

  4. 例如,使用您的A数组:

    A = [5 7 8; 0 1 9; 4 3 6];
    A(:,:,2) = [1 0 4; 3 5 6; 9 8 7];
    
    • 要对您需要的第一个矩阵进行子集化:所有维度1“:”,所有维度2“:”,以及维度3“1”的第一个元素。因此:

      A(:,:,1)   %Returns      5     7     8
      %                        0     1     9
      %                        4     3     6
      
    • 要获取第二页的第一列和第三列,请使用:

      A(:, [1 3], 2)  %Returns      1     4
      %                             3     6
      %                             9     7
      
    • 要获取第一个matrax中以9结尾的所有行,您可以使用:

      mask = A(:,3,1)==9;  %Returns logical [0; 1; 0];
      A(mask, :, 1);       %Returns [0   1   9;