Re: Where is the largest point ? [message #26136] |
Wed, 08 August 2001 14:03 |
Guillaume Dargaud
Messages: 15 Registered: January 2001
|
Junior 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.
Thanks for the detailed explanation.
It's good to know but not much worse than other languages (take C that only
has 1D arrays or arrays of arrays).
--
Guillaume Dargaud
Colorado State University - Dept of Atmospheric Science
http://rome.atmos.colostate.edu/
"The scientific theory I like best is that the rings of Saturn are
composed entirely of lost airline luggage." - Mark Russell.
|
|
|
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
|
|
|
Re: Where is the largest point ? [message #26140 is a reply to message #26138] |
Wed, 08 August 2001 13:13  |
btt
Messages: 345 Registered: December 2000
|
Senior Member |
|
|
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
|
|
|