如何在MatLab中用零替换特定值的列?

gblwokeq  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(196)

我有一个矩阵,如:

A=  
 1 2 7 4  
 3 2 8 5  
 2 2 9 6

并且想要将只有2的列归零,并得到如下内容:

A=  
 1 0 7 4  
 3 0 8 5  
 2 0 9 6

有什么聪明的方法可以在没有两个for循环的情况下做到这一点吗?

tzxcd3kk

tzxcd3kk1#

您可以使用all查找全部为2的列

all2 = all( A == 2, 1 ); % check along first dim
A(:,all2 ) = 0; % make column zero

如果您希望将相同编号的所有列(不只是2)设置为零,您可以使用bsxfun进行帮助

allSame = all( bsxfun( @eq, A, A(1,:) ), 1 );
A( :, allSame ) = 0;

相关问题