How to sort a vector based on the absolute difference of the sorted vector

2 views (last 30 days)
Example: a= [2,3,6,12,7,18,25,0,28,5]
b= [0,2,3,5,6,7,12,18,25,28]
absolutediffofb=[2,1,2,1,1,5,6,7,3]
arrangeb=[(2,3)(5,6)(6,7)(0,2)(3,5)(25,28)(7,12)(12,18)(18,25)]
  2 Comments
Awais Saeed
Awais Saeed on 14 Dec 2021
It is not clear what you are trying to do? How do you read 'arrangeb'? Show us what have you tried and what issues are you facing.
Baththama Alhassan
Baththama Alhassan on 16 Dec 2021
arrangeb are elements in b sorted based on the sorted absolute difference of b
a= [2,3,6,12,7,18,25,0,28,5]
b= [0,2,3,5,6,7,12,18,25,28]
absolutediffofb=[2,1,2,1,1,5,6,7,3]
Sortabsolutediffofb=[1,1,1,2,2,3,5,6,7]
arrangeb=(2,3)=1
(5,6)=1
(6,7)=1
(0,2)=2
(3,5)=2
(25,28)=3
(7,12)=5
(12,18)=6
(18,25)=7

Sign in to comment.

Accepted Answer

David Goodmanson
David Goodmanson on 14 Dec 2021
Hi Awais,
a= [2,3,6,12,7,18,25,0,28,5]
b = sort(a)' % column vector
c = [b(1:end-1) b(2:end)];
d = [diff(c,[],2) c];
e = sortrows(d)
e =
1 2 3
1 5 6
1 6 7
2 0 2
2 3 5
3 25 28
5 7 12
6 12 18
7 18 25
The ordered pairs are in columns 2 and 3. Some format like this is necessary since
[(2,3)(5,6)(6,7)(0,2)(3,5)(25,28)(7,12)(12,18)(18,25)]
is not part of Matlab syntax.
  3 Comments
Image Analyst
Image Analyst on 15 Dec 2021
Where is "arrangeb"? It looks like you might be missing this:
arrangeb = e(:, 2:3);

Sign in to comment.

More Answers (0)

Categories

Find more on Shifting and Sorting Matrices in Help Center and File Exchange

Products


Release

R2018a

Community Treasure Hunt

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

Start Hunting!