使用一个数组值访问另一个数组元素 Matlab

Using one array values to access another array elements Matlab

我正在 Matlab 中进行一些 3D 和 4D 矩阵操作。 我创建了一个 2D 数组,其中行值包含 3D 矩阵中感兴趣的索引值。

假设数组 A 的大小为 (Nx2)

A=[2 3 1;5 6 2;7 9 3;3 3 4;1 5 5]

2   3   1
5   6   2
7   9   3
3   3   4
1   5   5

然后,我想用这些元素来操作大小为(NxMxL)的矩阵B

B=rand(9,9,5);

所以我想设置 B(2,3,1)=0 对应于 A(1,:)。

如果我天真地去 B(A(1,:))=0 这不会 return 我想要的输出。 我的理解是 Matlab 将其转换为 B=B(:) ,将矩阵重塑为 1xNML 然后 return 给我重塑矩阵的元素 2、3 和 1。

我怎样才能避免这种情况并让它理解我的论点 B(A(1,:))=B(2,3,1)?

使用 sub2ind ,例如使用 A 中的行作为索引将 B 中的所有元素归零:

B(sub2ind(size(B),A(:,1),A(:,2),A(:,3)))=0;