[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

*Subject*: Re: setintersection*From*: Jonathan Joseph <jj(at)scorpio.tn.cornell.edu>*Date*: Thu, 16 Sep 1999 11:14:30 -0400*Newsgroups*: comp.lang.idl-pvwave*Organization*: Cornell University*References*: <37DFD05C.4FFF@scorpio.tn.cornell.edu>*Sender*: verified_for_usenet(at)cornell.edu (jj21 on scorpio.tn.cornell.edu)*Xref*: news.doit.wisc.edu comp.lang.idl-pvwave:16584

Well, to answer my own question, if anyone's interested... After thinking about it a bit, I was able to modify the setintersection function to produce the desired result. Like the other routines, it "operates on sets represented by arrays of positive integers." There's probably a way to make it more efficient, but here it is. ;; ;; finds the indeces in sets <a> and <b> of elements ;; in the intersection of sets <a> and <b> ;; pro iSetIntersection, a, b, ia=ia, ib=ib ;; use the full range minab = min(a, MAX=maxa) < min(b, MAX=maxb) maxab = maxa > maxb ;; If either set is empty return null sets if minab lt 0 then begin ia = -1 ib = -1 return endif ;; find intersection r = histogram(a, MIN=minab, MAX=maxab) < 1 and $ histogram(b, MIN=minab, MAX=maxab) < 1 ;; indeces of elements in intersection ia = where(r(a-minab) gt 0) ib = where(r(b-minab) gt 0) end And here's the original setintersection FUNCTION SetIntersection, a, b minab = min(a, MAX=maxa) > min(b, MAX=maxb) ;Only need intersection of ranges maxab = maxa < maxb ;; If either set is empty, or their ranges don't intersect: result = NULL. if maxab lt minab or maxab lt 0 then return, -1 r = where((histogram(a, MIN=minab, MAX=maxab) ne 0) and $ (histogram(b, MIN=minab, MAX=maxab) ne 0), count) if count eq 0 then return, -1 else return, r + minab end Jonathan Joseph wrote: > > Hi, I've grabbed the useful functions > > SetIntersection(a,b) ; Common elements > SetUnion(a,b) ; Elements in either set > SetDifference(a,b) ; Elements in A but not in B > > from David Fanning's web page > http://www.dfanning.com/tips/set_operations.html > > But, what I really would like is a function > that would return the indeces in set A (or B) of > the intersection of A and B. > > Does anyone know an efficient way to get this, or > will I have to resort to a loop? > > -Jonathan

- Prev by Date:
**map_set question** - Next by Date:
**Re: device, get_decomposed question** - Prev by thread:
**Re: Best,Fastest platform for IDL 5.2 (NT or UNIX)** - Next by thread:
**Re: device, get_decomposed question** - Index(es):