为了论证,让我说我有这个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),我该怎么做?
答案 0 :(得分:4)
评论中的简短回答是:
A(:,:,1)
更长的答案:
您可以通过简单地指定每个维度所需的元素来选择矩阵的任何(超)矩形子集,天气中阵列中有1,2,3,4或更多维度。简而言之:
按顺序指定每个维度。尺寸1指定行,尺寸2指定列,尺寸3和尺寸通常不可视化,因此只需重复3和更高
对于每个维度,您可以指定以下内容之一:a)单个索引号,b)索引号的向量,或c)与您从d中选择的维度长度相同的逻辑向量:
,代表此维度中的所有元素。
每个维度说明符与AND编号在一起,从而产生(超)矩形阵列。
例如,使用您的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;