给定沿每个轴的索引向量获取矩阵值

Getting the matrix value given a vector of indices along each axis

我有一个 Matlab 矩阵 M,大小为:[70 5 3 2 10 9 5 3 21]; 我有一个带有坐标的向量,我想读取该矩阵的坐标:[5, 1, 1, 2, 3, 4, 1, 2, 1];

我想要获得的 MWE 示例:

M = rand(70     5     3     2    10     9     5     3    21);
coordinates =  [5, 1, 1, 2, 3, 4, 1, 2, 1];

% Output desired:
M(5, 1, 1, 2, 3, 4, 1, 2, 1)

%Current attempt:
M(coordinates) 

显然M(coordinates) <> M(5, 1, 1, 2, 3, 4, 1, 2, 1)。有办法吗?

有点笨拙,但你可以将数组转换为元胞数组,然后再转换为 comma-separated 列表:

M = rand(70, 5, 3, 2, 10, 9, 5, 3, 21);
coordinates =  [5, 1, 1, 2, 3, 4, 1, 2, 1];

coords_cell = num2cell(coordinates);
result = M(coords_cell{:});