如何访问一个n-D矩阵的元素,其中索引来自Matlab中的数学运算?
例如我有一个名为A的4D矩阵。 我想访问元素1,1,1,1,它来自(3,4,5,6) - (2,3,4,5)
我有什么方法可以做到这一点,假设数组可以是任何维度 d 并且减法中的数组总是 d 元素长?
答案 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{:});