How can I sort a matrix to match another matrix?

조회 수: 2 (최근 30일)
Doli Swey
Doli Swey 2020년 9월 15일
댓글: Doli Swey 2020년 10월 19일
Hello everybody,
I have a question regarding the sorting. I have 2 matrices, A and B. For example:
A = [11 1; 12 1; 13 1; 21 2; 23 2; 31 3; 33 3; 41 4]
B = [1; 2; 1; 3; 1; 4; 2; 3]
How can I sort A (randomly each time) that the 2 column of A is same with B? Such as:
A = [12 1; 23 2; 11 1; 31 3; 13 1; 41 4; 21 2; 33 3]
Stay happy and healty..

채택된 답변

Stephen23
Stephen23 2020년 9월 16일
>> [~,idx] = sort(B);
>> [~,idx(idx)] = sort(A(:,2));
>> A = A(idx,:)
A =
11 1
21 2
12 1
31 3
13 1
41 4
23 2
33 3
  댓글 수: 6
Stephen23
Stephen23 2020년 10월 17일
편집: Stephen23 2020년 10월 17일
"Do you have any idea that I can make this work?"
Possibly you could replace the RHS with a string (or character vector) of the number:
A(:,2) == num2str(k)
"...the first column contains strings, whereas second column is numbers."
I strongly recommend that you convert the data into a table, then the first column would be strings and the second column really would be numbers (not strings encoding numbers). Numeric data should be efficiently stored as numeric, which also makes processing it much easier.
Doli Swey
Doli Swey 2020년 10월 19일
I understand! Thank you so much. Have a wonderful day

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Characters and Strings에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by