使用一个数组值访问另一个数组元素 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;
我正在 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;