我有一个以下形式的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
让我们剖析一下你在问什么:
第3行的矩阵
val(3, ?, ?)
和前两列
val(3, 1:2, ?) % or [1,2]
至于第三个索引,你想对所有“切片”做这个,所以你应该使用:
,这意味着在这个上下文中的“all”:
val(3, 1:2, :)
作为explained by obchardon,这导致1×2×3
数组,而你想要一个3×2(×1)
- 所以我们需要重新排序维度:
out = permute( val(3, 1:2, :), [3,2,1] );
您可以使用经典的线性索引:
extract = val(3,1:2,:)
但当然它会产生1x2x3的矩阵,具有领先的单例维度。您可以使用以下命令删除单例维度:
extract = squeeze(val(3,1:2,:))
恩最后转置你的结果以获得预期的输出:
extract = squeeze(val(3,1:2,:)).'