我有一个多维数组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
中的点?
如果可能的话,我更喜欢不使用任何循环的解决方案,但这可能是不可能的,所以如果您有基于循环的解决方案,请提出建议!
答案 0 :(得分:3)
使Data = [1, 2; 3, 4];
Location = {1, 2};
Data(Location{:})
成为一个单元格数组,对于您的问题的评论中给出的示例:
ans = 2
哪个给出了
Location
根据@BillBokeey的评论进行编辑:
将num2cell
定义为上面的单元格数组,或使用Location
将行向量Data = [1, 2; 3, 4];
Location = [1, 2];
Location_cell = num2cell(Location);
Data(Location_cell{:})
转换为单元格数组,例如:
defaultACL.publicReadAccess = true