How to find out if a logical array is all zeros?

조회 수: 201(최근 30일)
MKM 2022년 2월 3일
댓글: MKM 2022년 2월 4일
I have a logical array that is 100x1 logical. sometimes it contains a mix of numbers and sometimes it contains all 0s.
How would i go about making an if statement that checks to see if all 100x1 is 0s and if all 0s = do something
I thought i was correct in using any command but im not sure that works correctly for me..

채택된 답변

John D'Errico
John D'Errico 2022년 2월 3일
편집: John D'Errico 2022년 2월 3일
any does work, with a slight tweak. But you could also use all, or sum, or nnz, or even find. There are certainly many ways.
if ~any(X)
if all(~X)
if sum(x) == 0
if numel(find(x)) == 0
if nnz(x) == 0
Any of those tools would suffice.

추가 답변(4개)

Turlough Hughes
Turlough Hughes 2022년 2월 3일
One way:

David Hill
David Hill 2022년 2월 3일
if all(~yourArray)

William Rose
William Rose 2022년 2월 3일
If A is a vector,
will be zero, or not, of all the elements are zero, or not.
If A is a 2D array, do

Steven Lord
Steven Lord 2022년 2월 3일
For a vector, all with one input will work.
x = ones(10, 1);
all(x > 0) % true
ans = logical
For a non-vector array you probably want to specify a dimension. In recent releases, you can specify a vector of dimensions on which to operate or you can specify 'all' as the dimension to operate on all the dimensions no matter how many there are.
x = ones(10, 10);
all(x > 0) % Only operate on dimension 1
ans = 1×10 logical array
1 1 1 1 1 1 1 1 1 1
all(x > 0, 'all') % Operate on dimensions 1 and 2
ans = logical
x = ones(10, 10, 10);
all(x > 0, [1 3]) % Operate on dimensions 1 and 3
ans = 1×10 logical array
1 1 1 1 1 1 1 1 1 1
all(x > 0, 'all') % Operate on dimensions 1, 2, and 3
ans = logical
  댓글 수: 1
MKM 2022년 2월 4일
This is great! Thanks for taking the time to help me with this.

댓글을 달려면 로그인하십시오.




Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by