假设我有一个 3 维数组A = rand(3, 4, 5);
,我想提取一个 vector A(1,1,:)
。如果我这样写,输出是一个 size 的 3D 数组,[1 1 5]
而不是一个 size 的普通向量[1 5]
。例如,这不允许我将其分配给另一个子数组B(1,:)
(导致“下标分配维度不匹配”)。在不保留原始尺寸的情况下提取向量的最佳方法是什么?
我可以想到两种方法:
计算所需元素的线性索引,而不是使用下标:
targetInds = 1:5; fixedInds = repmat(1,size(targetInds)); inds = sub2ind(size(A), fixedInds, fixedInds, targetInds); size(A(inds)) ans = 1 5
使用
reshape
:subA = reshape(A(1,1,:),1,size(A,3)); size(subA) ans = 1 5
第二种方法似乎更容易,但我想它的效率较低,而且它们都需要额外的代码。有没有更直接的方法?