Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

New to MATLAB?

arrange indices

Asked by huda nawaf

huda nawaf

on 28 Apr 2012
Accepted Answer by Andrei Bobrov

Andrei Bobrov

hi, if i have this vector

r=[2 4 18 5 6 15 3 4 16]; i need arrange index 3,6,9 with ascending, and each both previous index are arranged according for that as:

r=[5 6 15 3 4 16 2 4 18]; i.e just 3,6,.....are arranged with ascending and the index befor it are arranged according to third , sixth,..... i would to say ,this is just example i have too long vector

0 Comments

huda nawaf

huda nawaf

Tags

Products

No products are associated with this question.

1 Answer

Answer by Andrei Bobrov

Andrei Bobrov

on 28 Apr 2012
Accepted answer
[ii,ii] = sort(r(3:3:end));
out = reshape(r(bsxfun(@plus,ii*3,(-2:0)')),1,[]);

OR:

out = reshape(sortrows(reshape(r,3,[])',3)',1,[]);

7 Comments

huda nawaf

huda nawaf

on 28 Apr 2012

i want arrange the third , sixth, ninth,....elements with ascending , but when these elemnts are arranged the other elements that correspond with it it must be arranged also according to the
as example above
r=[2 4 18 5 6 15 3 4 16];
it must be as:
r=[5 6 15 3 4 16 2 4 18]
thanks

huda nawaf

huda nawaf

on 28 Apr 2012

what if need that
ex. r=[1 2 4 18 5 6 15 3 4 16];
if need 1 in same index and the other values as:
r=[1 5 6 15 3 4 16 2 4 18];

what will be changed in this command?
out = reshape(sortrows(reshape(r,3,[])',3)',1,[]);

Andrei Bobrov

Andrei Bobrov

on 29 Apr 2012

out = [r(1),reshape(sortrows(reshape(r(2:end),3,[])',3)',1,[])];

Andrei Bobrov

Andrei Bobrov

Contact us