MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: comparing two lists


In article <cv3m5r$cb7$1 at smc.vnet.net>,
 Andrzej Kozlowski <akoz at mimuw.edu.pl> wrote:

> I would say the simplest way to solve your problem is:
> 
> MyFunction1[mat_?MatrixQ, vec_?VectorQ] :=Position[mat - vec, _?(# > 0  
> &)]
> 
> For example with your data this gives:
> 
> In[2]:=
> mat={{0.183706,0.758693,0.462242,0.170041},{0.457054,0.349658,0.805455,0 
> .\
> 127763}};
> 
> In[3]:=
> vec={0.482259,0.314393};
> 
> In[4]:=
> MyFunction1[mat,vec]
> 
> Out[4]=
> {{1,2},{2,1},{2,2},{2,3}}
> 
> This tells you exactly the positions you wanted but not in the form you  
> asked for. Getting the output into that form will be the most  
> complicated part of the problem, so if you really do not need it I  
> would rather settle for the above. But of course there are lots of ways  
> to get exactly the answer you asked for.  You could try to bring the  
> answer above into the form you want or you could use something like:
> 
> MyFunction2[mat_?MatrixQ, vec_?VectorQ] :=  
> Map[Flatten[Position[mat[[#]] -
> vec[[#]], _?(# > 0 &)]] &, Range[Length[vec]]]

A simpler solution, very close to the original proposal
(Position[#1,_?(#>#2&)]&@@{mat,vec}) is

  Position[#, _?(# > 0 &)] & /@ (mat - vec)

Cheers,
Paul

-- 
Paul Abbott                                   Phone: +61 8 6488 2734
School of Physics, M013                         Fax: +61 8 6488 1014
The University of Western Australia      (CRICOS Provider No 00126G)         
35 Stirling Highway
Crawley WA 6009                      mailto:paul at physics.uwa.edu.au 
AUSTRALIA                            http://physics.uwa.edu.au/~paul


  • Prev by Date: Re: finding roots of 1 + 6*x - 8*x^3
  • Next by Date: Re: finding roots of 1 + 6*x - 8*x^3
  • Previous by thread: Re: comparing two lists
  • Next by thread: Re: comparing two lists