【发布时间】:2018-05-26 07:12:24
【问题描述】:
如何访问 n 维矩阵的元素,其中索引来自 Matlab 中的数学运算?
例如,我有一个名为 A 的 4D 矩阵。
我想访问由 (3,4,5,6) - (2,3,4,5) 产生的元素 1,1,1,1
如果数组可以是任意维度 d 并且减法后的数组始终是 d 个元素,我有什么办法可以做到这一点?
【问题讨论】:
标签: arrays matlab matrix indexing
如何访问 n 维矩阵的元素,其中索引来自 Matlab 中的数学运算?
例如,我有一个名为 A 的 4D 矩阵。
我想访问由 (3,4,5,6) - (2,3,4,5) 产生的元素 1,1,1,1
如果数组可以是任意维度 d 并且减法后的数组始终是 d 个元素,我有什么办法可以做到这一点?
【问题讨论】:
标签: arrays matlab matrix indexing
一种可能的方法是利用 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{:});
【讨论】: