comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » Re: findng array[3] in array[3,n]
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: findng array[3] in array[3,n] [message #23510 is a reply to message #23508] Thu, 25 January 2001 09:30 Go to previous messageGo to previous message
Craig Markwardt is currently offline  Craig Markwardt
Messages: 1869
Registered: November 1996
Senior Member
"tbowers" <tbowers@nrlssc.navy.mil> writes:

> If I have
>
> a=[ $
> [0,1,2], $
> [3,4,5], $
> [6,7,8]]
>
> b=[3,4,5]
>
> how do I find where in a is the row vector b? The answer should
> be 1, the 2nd row of a. I've tried many
> permutations of where(), but I just don't get it. The only way I
> can get an answer is to loop through the rows till i find a match.
> What I'm really tryin' to do is to find a color in a color table,
> e.g. load RAINBOW color table, (loadct,13) then identify
> where a color is. For the color that's listed 6th in the color table
> (an almost black) that'd be the 5th row index. Like:
...
>

Your problem is that WHERE only does a 1D search. So you need to
somehow convert your triplets to a single number.

Solution 1:

1. Convert your 3 BYTE values to a single LONG value:
colorwords = long(r) + ishft(long(g),8L) + ishft(long(b),16L)
do the same for your target, and use WHERE to find the match

This will be fast if you need a few matches, slow if you need a ton
of matches.

2. Search on R value alone using WHERE, then use a FOR loop to scan
the resulting matches.

wh = where(r EQ rtarg, ct)
if ct GT 0 then for i = 0, ct-1 do if ...

Probably overkill.

3. Use a Euclidean distance to find the color table entry with the
smallest distance from you target value [rtarg, gtarg, btarg]. You
should convert R G and B to vectors of type LONG to prevent
overflow:

dist = (r-rtarg)^2 + (g-gtarg)^2 + (b-btarg)^2
wh = where(dist EQ min(dist))

This will be the most robust to small variations in the color table
(ie, if an exact match doesn't exist).

Any other ideas?

Craig

--
------------------------------------------------------------ --------------
Craig B. Markwardt, Ph.D. EMAIL: craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
------------------------------------------------------------ --------------
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: colors... again
Next Topic: Re: Back to idl after a looong time...

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Sat Oct 11 00:58:02 PDT 2025

Total time taken to generate the page: 2.95729 seconds