如果Column的一个元素等于零,则将整个列设为零

时间:2018-05-26 17:42:27

标签: matlab

让我说我有这个矩阵:

 B = [16 0 3 13;5 11 10 0;9 0 6 12;4 14 15 1];

 if(columnContainzero (zeros(thatColumn))

有没有这样做的功能?

2 个答案:

答案 0 :(得分:1)

您可以使用逻辑索引:

ColumnsContainingZeros = any( B == 0, 1 );
% >> ColumnsContainingZeros = [0 1 0 1]

然后使这些列中的所有行等于0

B(:, any(B==0,1)) = 0;
% >> B = [ 16     0     3     0
%           5     0    10     0
%           9     0     6     0
%           4     0    15     0 ]

要对行而不是列执行相同的操作,请使用any(B==0,2)作为索引,使用B(any(B==0,2), :) = 0更改这些行中的所有列。

答案 1 :(得分:0)

如果你不介意沿着行进行sum操作,你可以使用这个简单的单行:

B(:,sum(B==0)>0)=0