Select the column with at least one 1 in it

10 vues (au cours des 30 derniers jours)
Rishi Balasubramanian
Rishi Balasubramanian le 20 Déc 2020
Commenté : Walter Roberson le 20 Déc 2020
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?

Réponse acceptée

Walter Roberson
Walter Roberson le 20 Déc 2020
Modifié(e) : Walter Roberson le 20 Déc 2020
find(any(H,1))
If you need at most n ones then:
b = sum(H,1);
find(b >= 1 & b <= n)
  4 commentaires
Rishi Balasubramanian
Rishi Balasubramanian le 20 Déc 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?
Walter Roberson
Walter Roberson le 20 Déc 2020
any(H==min(H(H~=0)),1)

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Logical dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by