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

Arrays 使用一个数组值访问另一个数组元素,arrays,matlab,matrix-multiplication,Arrays,Matlab,Matrix Multiplication,我正在用Matlab做一些3D和4D矩阵操作。 我创建了一个2D数组,其中行值包含3D矩阵中感兴趣的索引值 假设数组大小为(Nx2) 然后,我想使用这些元素来操作大小为(NxMxL)的矩阵B 所以我想设置B(2,3,1)=0,对应于A(1,:) 如果我天真地将B(A(1,:)=0,则不会返回所需的输出。 我的理解是,Matlab将其转换为B=B(:),从而将矩阵重塑为1xNML 然后返回重塑矩阵的元素2、3和1 如何避免这种情况并使其理解我的参数B(A(1,:)=B(2,3,1)?使用sub2i

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

假设数组大小为(Nx2)

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

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

如果我天真地将B(A(1,:)=0,则不会返回所需的输出。 我的理解是,Matlab将其转换为B=B(:),从而将矩阵重塑为1xNML 然后返回重塑矩阵的元素2、3和1


如何避免这种情况并使其理解我的参数B(A(1,:)=B(2,3,1)?

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

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

谢谢,我确实对补码函数ind2sub()很熟悉,但是我没有想到相反的存在。
B=rand(9,9,5);
B(sub2ind(size(B),A(:,1),A(:,2),A(:,3)))=0;