Effacer les filtres
Effacer les filtres

Find rows with maximum number and replace them with 1

2 vues (au cours des 30 derniers jours)
Maryam Hamrahi
Maryam Hamrahi le 8 Août 2016
Commenté : Maryam Hamrahi le 8 Août 2016
I have a matrix with n rows and 1 column. I would like to find row which have the maximum number. Then, replace 1 in these rows and replace 0 in other rows.
For instance: I have matrix A and I would like to produce matrix B.
A=
5
0
0
4
3
0
B=
0
1
1
0
0
1

Réponse acceptée

Stephen23
Stephen23 le 8 Août 2016
Modifié(e) : Stephen23 le 8 Août 2016
A = [5;0;0;4;3;0];
[cnt,idx] = histc(A,unique(A));
[~,idz] = max(cnt);
B = idx==idz;
outputs this
>> B
B =
0
1
1
0
0
1
and A = [1;1;0;4;3;1]; outputs this:
>> B
B =
1
1
0
0
0
1
  1 commentaire
Maryam Hamrahi
Maryam Hamrahi le 8 Août 2016
Thank you very much Stephen Cobeldick.nYour cooperation is really appreciated.
Also Thanks a lot José-Luis and Walter Roberson.

Connectez-vous pour commenter.

Plus de réponses (2)

Walter Roberson
Walter Roberson le 8 Août 2016
B = A == min(A);
  4 commentaires
Maryam Hamrahi
Maryam Hamrahi le 8 Août 2016
Modifié(e) : Maryam Hamrahi le 8 Août 2016
Many thanks Walter Roberson.
I am not looking for the min. or max. values in the matrix.
I want to find rows which has the most frequent number. for instance in example 2, rows with number "1" are repeated three times. Therefore, I want to replace these rows with "1". However, in this example the numbers are already 1. Afterward, I want to replace 0 in other rows.
Thank you for the cooperation.
Maryam Hamrahi
Maryam Hamrahi le 8 Août 2016
Please also look at my comment for José-Luis.
Thanks a lot.

Connectez-vous pour commenter.


José-Luis
José-Luis le 8 Août 2016
Modifié(e) : José-Luis le 8 Août 2016
What you ask and the example you show are not consistent. To produce what you show:
B = A == 0
  1 commentaire
Maryam Hamrahi
Maryam Hamrahi le 8 Août 2016
Many thanks José-Luis. Please see my comment for Walter Roberson.
If you look at the following example, 2 is the most frequent number in the matrix, so, I want to replace this number with 1. Afterward, I want to replace 0 in the other rows.
A=
2
2
0
4
3
2
B=
1
1
0
0
0
1

Connectez-vous pour commenter.

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