Re: Where is the largest point ? [message #26138 is a reply to message #26136] |
Wed, 08 August 2001 13:50   |
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
|
|
|