我正在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,这不会返回我想要的输出。据我了解,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;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句