我得到了以下形式的3d矩阵:3x3x46
有没有一种简单的方法可以提取第3行和前两列的矩阵?
对于这里的示例3x3x3
,我想提取
0.2710 0.5965
0.0280 0.3255
0.2285 0.4695
以下是示例:
val(:,:,1) =
-0.0492 0.6831 0.1291
-0.4870 0.2893 0.2642
0.2710 0.5965 0.8940
val(:,:,2) =
-0.2316 1.4371 2.5806
-2.4170 1.2168 6.4721
0.0280 0.3255 0.0730
val(:,:,3) =
-0.0881 0.9226 0.3146
-1.0027 0.8638 1.0925
0.2285 0.4695 0.6715
答案 0 :(得分:2)
我们来剖析您的要求:
第3行的矩阵
val(3, ?, ?)
以及前两列
val(3, 1:2, ?) % or [1,2]
对于3 rd 索引,您想对所有“切片”执行此操作,因此您应使用:
,在此情况下表示“全部”:
val(3, 1:2, :)
与explained by obchardon一样,这会产生一个1×2×3
数组,而您需要一个3×2(×1)
-因此我们需要重新排列尺寸:
out = permute( val(3, 1:2, :), [3,2,1] );
答案 1 :(得分:1)
您可以使用经典的线性索引:
extract = val(3,1:2,:)
但是,它当然会产生一个1x2x3的矩阵,具有领先的单例尺寸。您可以使用以下方法删除单例尺寸:
extract = squeeze(val(3,1:2,:))
En最终对结果进行转置以获得预期的输出:
extract = squeeze(val(3,1:2,:)).'