Matlab - 访问多维数组的一部分

Jab*_*bor 6 arrays matlab tensor

我试图在Matlab中访问多维数组的一部分 - 它可以这样做:X(2:3, 1:20, 5, 4:7) 但是,元素的数量和范围都没有固定,所以我想提供数组的索引 - 对于上面的例子他们会的

ind1 = [2 1 5 4];
ind2 = [3 20 5 7];
Run Code Online (Sandbox Code Playgroud)

对于固定数量的维度,这不是问题(X(ind1(1):ind2(1),...)但是因为它们不是我不确定如何在Matlab中实现它.有没有办法?或者我应该以不同的方式处理它?

EBH*_*EBH 6

使用逗号分隔列表,您可以使其更快速和友好:

% some test data
ind1 = [2 1 5 4];
ind2 = [3 20 5 7];
X = randi(99,20,20,20,20);

% get all subscripts in column format
vecs = arrayfun(@colon,ind1,ind2,'un',0);
% extract the values
result = X(vecs{:});
Run Code Online (Sandbox Code Playgroud)