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

如果向量只包含零,如何在MATLAB中检查?

  •  13
  • Lucas  · 技术社区  · 14 年前

    什么是“MATLAB方法”来检查一个向量是否只包含零,这样它将被计算为一个标量而不是一个向量。如果我运行此代码:

    vector = zeros(1,10)
    
    %the "1" represents a function that returns a scalar
    if 1 && vector == 0   %this comparision won't work
        'success'
    end
    

    运算符必须可转换为 逻辑标量值。

    5 回复  |  直到 14 年前
        1
  •  23
  •   ptomato    14 年前

    使用 all

    vector = zeros(1,10)
    if 1 && all(vector == 0)   %this comparision will work
        'success'
    end
    
        2
  •  14
  •   Community Alex Howansky    7 年前

    因为零的处理方式与 false ,您不需要使用 vector == 0 ptomato 建议。 ~any(vector) 是只检查零值的“MATLAB方法”。

    if 1 && ~any(vector)   
        'success'
    end
    

    如果将问题扩展到数组,则必须使用

    array = zeros(5);
    if 1 && ~any(array(:))
        'success'
    end
    
        3
  •  4
  •   Shai    11 年前

    有点晚了,但是我们一起去怎么样 nnz ( Number of Non-Zeros

    if 1 && nnz(vector)==0
        'success'
    end
    
        4
  •  1
  •   AnnaR    11 年前

    你可以很容易地找到,如果有的话,有多少个条目 vector 包含使用以下内容的非零元素:

    vector = zeros(1, 10); 
    nrNonZero = sum(vector~=0)
    

    vector~=0 返回与相同维度的数组 矢量 nrNonZero 矢量 .

    if (sum(vector~=0) == 0)
        'success'
    end
    
        5
  •  0
  •   James Mertz    11 年前

    也可以使用以下方法:

    if(boolFunCall() & ~vector)
        disp('True');  
    else
        disp('False');
    end
    

    && 而不是 & . 此外,还有 ~

    test = [0 0 0 0 0 0];
    ~test
    ans =
    
         1     1     1     1     1     1     1
    test = [1 0 0 1 0 1 0 0 0];
    ~test
    ans =
    
         0     1     1     0     1     0     1     1     1