【发布时间】:2013-06-15 15:40:12
【问题描述】:
假设我有一个 3 维数组 A = rand(3, 4, 5);,我想提取一个向量 A(1,1,:)。如果我这样写,输出是一个大小为[1 1 5] 的3D 数组,而不是一个大小为[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
第二种方法似乎更容易,但我想它的效率较低,而且它们都需要额外的代码。有没有更直接的方法?
【问题讨论】:
标签: matlab