如何访问索引来自数学运算的n-D矩阵的元素

时间:2017-12-12 14:46:41

标签: arrays matlab matrix indexing

如何访问一个n-D矩阵的元素,其中索引来自Matlab中的数学运算?

例如我有一个名为A的4D矩阵。 我想访问元素1,1,1,1,它来自(3,4,5,6) - (2,3,4,5)

我有什么方法可以做到这一点,假设数组可以是任何维度 d 并且减法中的数组总是 d 元素长?

2 个答案:

答案 0 :(得分:1)

一种可能的方法是利用MATLAB可以对任何n维数组和行列类型索引使用线性索引的事实。然后你只需要计算你的运算结果的线性指数。

可能有更优雅的方法可以做到这一点,但如果x是包含您的操作结果的数组,那么以下工作

element = A(sum((x-1).*(size(A).^[0:length(size(A))-1]))+1);

sub2ind函数在这里感觉它应该有所帮助,但似乎并没有。

答案 1 :(得分:0)

另一种方法是转换为单元格数组,然后转换为以逗号分隔的列表:

A = rand(3,4,5,6); % example A
t = [2 1 3 4]; % example index
u = num2cell(t);
result = A(u{:});