【发布时间】:2016-04-12 21:27:53
【问题描述】:
我有一个多维数组Data 和一个1xn 向量Location,其元素对应于我希望在数组Data 中访问的特定点的索引。
因此,向量Location 中的元素个数始终等于多维数组Data 的维数。 (If length(Location) = n, then dim(Data)=n)。
例如,如果Location = [4 0 9 3],那么我试图在Data 中访问的点将是:result = Data(4,0,9,3)。
如果Data 的维度是固定的,我可以简单地做(如果说,n=4):
result = Data(Location(1,1), Location(1,2), Location(1,3), Location(1,4));
但是,在我的问题中,Data 的尺寸(因此Location 的长度)发生了变化。
这使得访问Data 变得更加复杂,我有点不知所措。
我如何确定Data 中我试图访问的点?
如果可能的话,我更喜欢不使用任何循环的解决方案,但这可能是不可能的,所以如果您有基于循环的解决方案,请无论如何提出!
【问题讨论】:
-
为这种多维数组情况添加样本输入和预期输出?
-
Data(Location)不工作吗? -
@BillBokeey 它没有给我我想要的,因为它返回一个新向量,其元素对应于 Data 中的元素编号。例如:数据 [1 , 2 ; 3 , 4] 和 Location = [1 , 2] Data(Location) 返回: result = [1 , 3] 而我想要的是 Data(1,2)=2
-
确实如此。你需要做:
CellLoc=num2cell(Location);-out=Data(CellLoc{:}); -
CellLoc{:}等价于输入CellLoc{1},CellLoc{2},...正好是Location(1),Location(2),...
标签: arrays matlab multidimensional-array