Vectorization problem for grouping entries in an array

2 vues (au cours des 30 derniers jours)
L'O.G.
L'O.G. le 17 Avr 2023
Commenté : L'O.G. le 17 Avr 2023
The data below are grouped into three different subgroups based on the value of B(:,3). If, however, B(:,2) <= 1, how do I indicate that all of the entries in that subgroup share a common ID? For example, say I have the following:
B = [
1 1 1 0.1 0.2
2 0 1 0.3 0.1
3 1 1 0.1 0.2
4 2 2 0.6 0.1
5 3 2 0.3 0.7
6 1 3 0.1 0.5
7 0 3 0.5 0.1
8 1 3 0.9 0.2
]
I would like to return
C = [1 0 1];
where the first 1 indicates that the three entries (subgroup 1) with B(:,3) = 1 correspond to type 1, the next subgroup corresponds to type 0, and the third subgroup corresponds to type 0. Is there a robust way of doing this?
  6 commentaires
Image Analyst
Image Analyst le 17 Avr 2023
So when you said "the next subgroup corresponds to type 0, and the third subgroup corresponds to type 0", meaning the second and third subgroup are both zero, that was wrong? You really meant "the third subgroup corresponds to type 1"?
And when assigning the type, you give the criteria "B(:,2) > 1" so does that mean ALL col 2 values must be like that, and if so, all rows of that subgroup are that type? OR do you check that on a row by row basis so each row will have it's own type and you might have multiple types within a subgroup. For example
B = [
1 1 1 0.1 0.2
2 0 1 0.3 0.1
3 9 1 0.1 0.2];
Would the type be
theType = B(:, 2) > 2
theType = 3×1 logical array
0 0 1
or something else?
L'O.G.
L'O.G. le 17 Avr 2023
"the third subgroup corresponds to type 1"
>> This is what I meant. Before I had a badly placed typo. So sorry about that!
"And when assigning the type, you give the criteria "B(:,2) > 1" so does that mean ALL col 2 values must be like that, and if so, all rows of that subgroup are that type? "
>> This is correct. All rows of a subgroup will be of the same type.
Does that help? I really hope so.

Connectez-vous pour commenter.

Réponses (1)

Matt J
Matt J le 17 Avr 2023
findgroups(B(:,2)<=1, B(:,3))
  1 commentaire
L'O.G.
L'O.G. le 17 Avr 2023
That returns [2 2 2 1 1 3 3 3]' rather than the array C = [1 0 1]

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Produits


Version

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by