I am having cell array of size 3x1
[5,6]
[1,2]
[5,8]
could anyone help me how to sort the rows to get the result in the following manner
[1,2]
[5,6]
[5,8]

1 Kommentar

Scott MacKenzie
Scott MacKenzie am 24 Jun. 2021
It would help if you posted the code that generates the cell array you want to sort.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Mohammad Sami
Mohammad Sami am 25 Jun. 2021

0 Stimmen

You can try this out.
B = {[5,6] [1,2] [5,8]};
[~,i] = sort(cellfun(@(x)sum(x.*power(10,[length(x):-1:1]-1)),B));
B = B(i)
B = 1×3 cell array
{[1 2]} {[5 6]} {[5 8]}

3 Kommentare

jaah navi
jaah navi am 25 Jun. 2021
It works. Could you please clarify why 10 is included in the command line
[~,i] = sort(cellfun(@(x)sum(x.*power(10,[length(x):-1:1]-1)),B));
I tried replacing 10 by 5,3 it gives the same result.
Please clarify.
This is just converting the array into a decimal value so [5,6] to 56. So makes it easier to sort the numbers. Though you can replace it with the maximum value you expect to be present in your array and it should still work well enough.
B = {[5,6] [1,2] [5,8]};
cellfun(@(x)sum(x.*power(10,[length(x):-1:1]-1)),B)
ans = 1×3
56 12 58
jaah navi
jaah navi am 25 Jun. 2021
Thanks for your explanation.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by