Re: Following position change in different vectors
- To: mathgroup at smc.vnet.net
- Subject: [mg117509] Re: Following position change in different vectors
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Mon, 21 Mar 2011 06:15:14 -0500 (EST)
On 3/20/11 at 4:53 AM, lt648 at hszk.bme.hu (Lengyel Tamas) wrote: >1) I have 2 vectors with equal length. The positions of the first >vector correspond to the second vector. So the first element of v2 >is calculated from the first element of v1, etc. >2) I wish to sort the first vector in ascending magnitude using >Sort[v1]. Naturally the positions of v1's elements change. > >What I want is the same change of position in v2's positions. >(So e.g. if v1's sixth element moves after Sort to the first >position, I'd like v2's same position element to follow suit) One way to do what you want would be to make use of Ordering as follows: First, generate v1,v2 consistent with your description above In[1]:= v1 = RandomReal[{-1, 1}, {5}]; v2 = v1^2; In[3]:= p = Ordering[v1]; v1[[p]] v2[[p]] Out[4]= {-0.81929,-0.393001,-0.246831,0.237993,0.46827} Out[5]= {0.671236,0.15445,0.0609256,0.0566405,0.219277} Note, Out[4] is exactly the same as Sort[v1] In[6]:= %%^2 == % Out[6]= True Or if you don't want to explicitly construct p In[7]:= v2[[Ordering@v1]] Sort[v1] Out[7]= {0.671236,0.15445,0.0609256,0.0566405,0.219277} Out[8]= {-0.81929,-0.393001,-0.246831,0.237993,0.46827}