Select the column with at least one 1 in it

10 views (last 30 days)
Hey people
Assume I have a m by n matrix of binary data. How would I be able to identify the column that has the least number of ones?
I used the sum function and compared the max and min. Later on in many loops I realised that it also identifies the column with zero 1s too. How do I avoid that?
The column to be selected must have a minimum of one 1s to n number of ones.
b = sum(H);
bmax = max(b);
bmin = min(b);
RC = find(b==min(b));
%This is what I am using which identifies the column with zero ones. Any simple methods?

Accepted Answer

Walter Roberson
Walter Roberson on 20 Dec 2020
Edited: Walter Roberson on 20 Dec 2020
find(any(H,1))
If you need at most n ones then:
b = sum(H,1);
find(b >= 1 & b <= n)
  4 Comments
Rishi Balasubramanian
Rishi Balasubramanian on 20 Dec 2020
Consider a matrix H = 1x30.
The data in those elements are numbers 0, 1, 2, ......, n
I wanna be able select the column(s) with the values from 1.
If H has a '0', then columns having '1' must be returned.
If H has a '0', and has no 1s, then columns having '2' must be returned.
If H has a '0', and has no 1s and 2s, then columns having '3' must be returned.... and so on.
It should be able to return all the columns with a minimum value in it, where the minimum value cannot be zero. But it is any available minimum value after 0.
How do i achieve this?

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!