代码之家  ›  专栏  ›  技术社区  ›  Lawa

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

  •  0
  • Lawa  · 技术社区  · 6 年前

    假设我有一个矩阵:

     B = [16 0 3 13;5 11 10 0;9 0 6 12;4 14 15 1];
    
     if(columnContainzero (zeros(thatColumn))
    

    有这样做的功能吗?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Wolfie Radu Stefan    6 年前

    您可以使用逻辑索引:

    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 更改这些行中的所有列。

        2
  •  0
  •   Ash    6 年前

    如果你不介意的话 sum 沿行操作时,可以使用以下简单的单行线:

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