How to Sort Matrix Rows from Highest to Lowest

Simplied my problem so it's easier to solve. Let's pretend I have MatrixA that has 2 columns, and I want to sort the rows from highest to lowest depending on the value of the cell in the second column. How would I do this?
I also have a VectorB that starts at 10 and would like to add the value of each row in column 2 of the sorted MatrixA. How would I do this? Note this needs to come after MatrixA is sorted from highest to lowest.
Any suggestions matlab wizards out there? Really want to avoid using loops to make the code inefficient.
%Just creating example of the matrix I want to sort you can ignore this
MatrixA = cell(3,2);
MatrixA{1,1} = "D1";
MatrixA{2,1} = "D2";
MatrixA{3,1} = "D3";
MatrixA{1,2} = 5;
MatrixA{2,2} = 15;
MatrixA{3,2} = 10;
% Creating Vector B based on the already defined values for MatrixA which aren't in order
VectorA = [10 10+MatrixA{1,2} 10+MatrixA{2,2} 10+MatrixA{3,2}];
% How would I sort MatrixA from highest to lowest here and the values of VectorB to be based on the sorted MatrixA?

1 Comment

"How would I do this?"
By using a table, which would suit your data better.

Sign in to comment.

Answers (2)

MatrixA = cell(3,2);
MatrixA{1,1} = "D1";
MatrixA{2,1} = "D2";
MatrixA{3,1} = "D3";
MatrixA{1,2} = 5;
MatrixA{2,2} = 15;
MatrixA{3,2} = 10;
T = cell2table(MatrixA)
T = 3x2 table
MatrixA1 MatrixA2 ________ ________ "D1" 5 "D2" 15 "D3" 10
sortrows(T, 2, 'descend')
ans = 3x2 table
MatrixA1 MatrixA2 ________ ________ "D2" 15 "D3" 10 "D1" 5
It's not clear about B, but
A = cell(3,2);
A(:,1)=cellstr("D"+[1:3]);
A(:,2)={5;15;10};
A=sortrows(A,2,'descend')
A = 3x2 cell array
{'D2'} {[15]} {'D3'} {[10]} {'D1'} {[ 5]}
B=10+[A{:,2}].'
B = 3x1
25 20 15
<mw-icon class=""></mw-icon>
<mw-icon class=""></mw-icon>
if I interpret the intent for B corrrectly.

Categories

Products

Asked:

on 30 Jul 2024

Commented:

on 31 Jul 2024

Community Treasure Hunt

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

Start Hunting!