How to find out if a logical array is all zeros?
조회 수: 201(최근 30일)
표시 이전 댓글
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..
Thanks!
댓글 수: 0
채택된 답변
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)
...
end
if all(~X)
...
end
if sum(x) == 0
...
end
if numel(find(x)) == 0
...
end
if nnz(x) == 0
...
end
Any of those tools would suffice.
댓글 수: 0
추가 답변(4개)
William Rose
2022년 2월 3일
@MKM,
If A is a vector,
sum(abs(A))
will be zero, or not, of all the elements are zero, or not.
If A is a 2D array, do
sum(sum(abs(A)))
댓글 수: 0
Steven Lord
2022년 2월 3일
For a vector, all with one input will work.
x = ones(10, 1);
all(x > 0) % true
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
all(x > 0, 'all') % Operate on dimensions 1 and 2
x = ones(10, 10, 10);
all(x > 0, [1 3]) % Operate on dimensions 1 and 3
all(x > 0, 'all') % Operate on dimensions 1, 2, and 3
참고 항목
범주
Find more on Multidimensional Arrays in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!