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

Home » Public Forums » archive » Re: Where is the largest point ?
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: Where is the largest point ? [message #26138 is a reply to message #26136] Wed, 08 August 2001 13:50 Go to previous messageGo to previous message
tam is currently offline  tam
Messages: 48
Registered: February 2000
Member
There's a bit of black magic regarding how IDL treats arrays. Any
multi-dimensional array can be treated as a 1-d array and in
a number of contexts IDL always treats arrays that way.


Suppose you have a two-D 500x400 array. When you use
it in the max function, IDL treats it as a 1-D 200000 element
array, so you just get back a scalar value for maxIndex.
To get the 2-d indices just use:

ix = maxIndex % 500
iy = maxIndex / 500 -- note that we use the X size in both lines.

The same thing happens with the where function.
E.g., suppose you want to know all of the values where your array
is 0.

w = where(array eq 0)

Now w is an array of the indices into the array but again treating
it as a 1-D array. [It just has a single element -1 if there are no values satisfying
the criteria]. Often its fine to just access the array as if it were 1-d, e.g,

array[w] = 0.1

but if you need to get the x and y indices (e.g., in a distance calculation),
then you want to do

px = w%nx
py = w/nx

where nx is the number of elements in a single line.

Now px and py will be arrays with the same length as w and you
can use array[w] or array[px,py] interchangeably.

Hope this helps more than it confuses,

Good luck,
Tom McGlynn

Ben Tupper wrote:
>
> Hi,
>
> Take a peek at the MAX function (check the online help)
>
> maxVal = Max(Arrat, maxIndex)
>
> maxVal will return the maximum value
> maxIndex will return the index of the maximum value within the array.
> If there is more than one value qualifying as MAX, then only the index
> of the first maxVal encountered is returned in maxIndex.
>
> Ben
>
> Guillaume Dargaud wrote:
>>
>> I'm still pretty basic at IDL and a lot of the _no loop_ concepts escape me
>> entirely (I'm too used to C and such).
>> If I have a 2D matrix, how do I find where is the maximum ?
>> Say:
>>
>> Mat=FltArr(NbX, NbY)
>> ...
>> [Xmax, YMax] = Where( Mat eq Max(Mat) )
>>
>> or something like that ?
>> --
>> Guillaume Dargaud
>> Colorado State University - Dept of Atmospheric Science
>> http://rome.atmos.colostate.edu/
>> "If those folks in Kansas are right about evolution never having happened,
>> I sure hope it happens soon." - Michael Sheinbaum.
>
> --
> Ben Tupper
> Bigelow Laboratory for Ocean Sciences
> 180 McKown Point Rd.
> W. Boothbay Harbor, ME 04575
> btupper@bigelow.org
[Message index]
 
Read Message
Read Message
Read Message
Previous Topic: Where is the largest point ?
Next Topic: Re: IDL virtual reality (was 3D Object IDL )

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

Current Time: Fri Oct 10 01:25:14 PDT 2025

Total time taken to generate the page: 0.56236 seconds