如何访问来自数学操作的索引的N-D矩阵的元素



我如何访问n-d矩阵的元素,其中索引来自matlab中的数学操作?

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

有什么办法可以做到这一点,假设数组可以是任何维度 d ,并且来自扣除的数组将始终是 d elements?

一种可能的方法是利用MATLAB可以使用线性索引对任何N维数组以及行类型索引使用。然后,您只需要计算操作结果的线性索引。

可能有一种更优雅的方法来做到这一点,但是如果x是保存您操作结果的数组,那么以下作用

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

sub2ind功能感觉在这里应该有帮助,但似乎没有。

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

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

最新更新