MATLAB Answers

How can I sort a matrix to match another matrix?

14 views (last 30 days)
Doli Swey
Doli Swey on 15 Sep 2020
Commented: Doli Swey about 15 hours ago
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..

  0 Comments

Sign in to comment.

Accepted Answer

Stephen Cobeldick
Stephen Cobeldick on 16 Sep 2020
>> [~,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 Comments

Show 3 older comments
Doli Swey
Doli Swey on 17 Oct 2020 at 0:45
Hello again Stephan, I have a problem regarding to
A (:, 2) == k
Since my A is a string array and k is double, I cannot proceed.
I have attached the A variable (CombinedStim).
I tried to use str2double and got NAN values ​​because the first column contains strings, whereas second column is numbers.
Then i try regexp, however I was not succesfull again.
Do you have any idea that I can make this work?
Stephen Cobeldick
Stephen Cobeldick on 17 Oct 2020 at 4:29
"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 about 15 hours ago
I understand! Thank you so much. Have a wonderful day

Sign in to comment.

More Answers (0)

Tags

Community Treasure Hunt

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

Start Hunting!