From: Oleg Komarov on
"Martin " <oneaccount(a)hotmail.co.uk> wrote in message <hlhf4g$19g$1(a)fred.mathworks.com>...
> I would appreciate any help with this:
>
> I enter the following code:
>
> a=[10 30 80 70 40 90 60 20 80]
> [aa,bb]=sort(a)
> cc=[1:1:9]
> dd=[cc-bb]
>
> asking for dd gives me the string
>
> 0 -6 1 -1 -4 -1 3 5 3
>
> How do I ask matlab to now put the postion moves under the respective numbers in string a? So it displays as:
>
> 0 1 5 3 -1 3 -1 -6 -4
>
> Such that the number of moves made by the number to put it in orde are placed in the position of the respective number in string a, rather than in the prosition of its number once arranged in order.
>
> I hope this makes sense? Any help very much appreciated.
>
> thank you

"Martin " <oneaccount(a)hotmail.co.uk> wrote in message <hlhiua$bl3$1(a)fred.mathworks.com>...
> thanks for your pointer.
>
> I tried this and got the string:
>
> 0 5 -6 -4 3 3 -1 1 -1
>
> which is not the string that I want. I am hoping to resolve such that I get the string depicted in the question.
>
> Thanks again.

a=[10 30 80 70 40 90 60 20 80]
[aa,bb]=sort(a)
cc=[1:1:9]
dd=[cc-bb]

asking for dd gives me the array:
0 -6 1 -1 -2 2 4 -1 3
as opposed to your example.

Oleg
From: Martin on
my apologies: The first string should read

a=[10 30 80 70 40 90 60 20 50]

not the last number has changed from 80 to 50 such that i have the string 10 thru 90.
From: Sadik on
Part of my answer to another question of yours with title "Reposted..."

Hi Martin,

You should use the following two lines:

[kk,mm] = sort(bb);
ff = dd(mm);

ff is what you are looking for.

Best.




"Martin " <oneaccount(a)hotmail.co.uk> wrote in message <hlhk9h$9l1$1(a)fred.mathworks.com>...
> my apologies: The first string should read
>
> a=[10 30 80 70 40 90 60 20 50]
>
> not the last number has changed from 80 to 50 such that i have the string 10 thru 90.
From: Oleg Komarov on
"Martin " <oneaccount(a)hotmail.co.uk> wrote in message <hlhk9h$9l1$1(a)fred.mathworks.com>...
> my apologies: The first string should read
>
> a=[10 30 80 70 40 90 60 20 50]
>
> not the last number has changed from 80 to 50 such that i have the string 10 thru 90.

two alternatives:

dd(cc-dd)=dd;
dd(bb) = dd;
Oleg
From: Martin on
Hi Sadik,

Many thanks, that worked perfectly!

Thanks to all for your help.