Re: comparing two lists
- To: mathgroup at smc.vnet.net
- Subject: [mg54637] Re: comparing two lists
- From: Paul Abbott <paul at physics.uwa.edu.au>
- Date: Fri, 25 Feb 2005 01:18:36 -0500 (EST)
- Organization: The University of Western Australia
- References: <200502161936.OAA19139@smc.vnet.net> <cv3m5r$cb7$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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
- References:
- comparing two lists
- From: Curt Fischer <tentrillion@gmail.NOSPAM.com>
- comparing two lists