How to partition a matrix by sorting a column?

1 次查看(过去 30 天)
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.

采纳的回答

Walter Roberson
Walter Roberson 2024-2-24
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 个)

Voss
Voss 2024-2-24
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

类别

Help CenterFile Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息

产品


版本

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by