Effacer les filtres
Effacer les filtres

How to partition a matrix by sorting a column?

1 vue (au cours des 30 derniers jours)
Wan-Yi Chiu
Wan-Yi Chiu le 24 Fév 2024
Déplacé(e) : Stephen23 le 24 Fév 2024
Dear friends:
I want to parttion a matrix into two submatrix by sorting the third column:
For example, the matrix is as follows:
A= [ 73.90 123.17 1.00;
73.79 121.83 0.00;
70.64 74.46 1.00;
69.74 86.40 0.00]
I need the output as:
A1= [ 73.90 123.17 1.00;
70.64 74.46 1.00]
and
A2= [ 73.79 121.83 0.00;
69.74 86.40 0.00]
Thank you very much.

Réponse acceptée

Walter Roberson
Walter Roberson le 24 Fév 2024
A= [ 73.90 123.17 1.00;
73.79 121.83 0.00;
70.64 74.46 1.00;
69.74 86.40 0.00]
A = 4×3
73.9000 123.1700 1.0000 73.7900 121.8300 0 70.6400 74.4600 1.0000 69.7400 86.4000 0
u = unique(A(:,3));
A1 = A(A(:,3)==u(2),:)
A1 = 2×3
73.9000 123.1700 1.0000 70.6400 74.4600 1.0000
A2 = A(A(:,3)==u(1),:)
A2 = 2×3
73.7900 121.8300 0 69.7400 86.4000 0
  1 commentaire
Wan-Yi Chiu
Wan-Yi Chiu le 24 Fév 2024
Déplacé(e) : Stephen23 le 24 Fév 2024
Dear friends
Thanks to you.

Connectez-vous pour commenter.

Plus de réponses (1)

Voss
Voss le 24 Fév 2024
A= [ 73.90 123.17 1.00;
73.79 121.83 0.00;
70.64 74.46 1.00;
69.74 86.40 0.00]
A = 4×3
73.9000 123.1700 1.0000 73.7900 121.8300 0 70.6400 74.4600 1.0000 69.7400 86.4000 0
C = splitapply(@(x){x},A,findgroups(A(:,end)));
Cell array C contains the matrices you want, A1 and A2
C{:}
ans = 2×3
73.7900 121.8300 0 69.7400 86.4000 0
ans = 2×3
73.9000 123.1700 1.0000 70.6400 74.4600 1.0000
so you don't need to make them separate new variables, but you can
A1 = C{2}
A1 = 2×3
73.9000 123.1700 1.0000 70.6400 74.4600 1.0000
A2 = C{1}
A2 = 2×3
73.7900 121.8300 0 69.7400 86.4000 0

Catégories

En savoir plus sur Descriptive Statistics dans Help Center et File Exchange

Produits


Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by