我有一个矩阵,如:
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循环的情况下做到这一点吗?
tzxcd3kk1#
您可以使用all查找全部为2的列
all
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;
1条答案
按热度按时间tzxcd3kk1#
您可以使用
all
查找全部为2的列如果您希望将相同编号的所有列(不只是2)设置为零,您可以使用bsxfun进行帮助