Crazy use of MAX function. [message #15930] |
Sun, 27 June 1999 00:00  |
Grady Daub
Messages: 22 Registered: June 1999
|
Junior Member |
|
|
I have data to be plotted. I want to create YRANGE based on max/min of
the data. The problem is that the maximum is always lower than "9999",
which is used to indicate "bad" data.
Without having to replace all 9999's with, say, zero , using MAX to find
the true maximum and then putting the 9999's back where they were...
How do I find a maximum/minumum value less/greater than a certain value?
MAX(data lt 9999) doesn't work. :-(
Ugh, I just thought of a way:
MAX(data(WHERE(data LT 9999)))
Is this the only way, or, does IDL already have something that does this
task?
|
|
|
Re: Crazy use of MAX function. [message #16112 is a reply to message #15930] |
Mon, 28 June 1999 00:00  |
Struan Gray
Messages: 178 Registered: December 1995
|
Senior Member |
|
|
Grady Daub, gadZOOKS8371@garnet.acns.fsuMMER.edu writes:
> How do I find a maximum/minumum value less/greater than a certain value?
device, decomposed=0
Oh no, that's the other question.
The answer to this one is:
dummy = HISTOGRAM(data, max=9998, omax=omax, omin=omin, binsize=9999)
The max keyword stops HISTOGRAM from considering your 9999 values,
the large binsize avoids wasting too much time actually constructing a
histogram. If you know your minimum value you can fine-tune binsize
to ensure that there is only one bin. The numbers you want will be
returned in omax and omin.
Struan
|
|
|
Re: Crazy use of MAX function. [message #16125 is a reply to message #15930] |
Mon, 28 June 1999 00:00  |
R.Bauer
Messages: 1424 Registered: November 1998
|
Senior Member |
|
|
Grady Daub wrote:
> I have data to be plotted. I want to create YRANGE based on max/min of
> the data. The problem is that the maximum is always lower than "9999",
> which is used to indicate "bad" data.
>
> Without having to replace all 9999's with, say, zero , using MAX to find
> the true maximum and then putting the 9999's back where they were...
>
> How do I find a maximum/minumum value less/greater than a certain value?
>
> MAX(data lt 9999) doesn't work. :-(
>
> Ugh, I just thought of a way:
>
> MAX(data(WHERE(data LT 9999)))
>
> Is this the only way, or, does IDL already have something that does this
> task?
How about this:
PRO use_of_valid_example
data_x=FINDGEN(100)
data_x[[1,10,20]]=9999
data_y=FINDGEN(100)
data_y[[3,13,21]]=9999
valid_x=WHERE(data_x NE 9999)
valid_y=WHERE(data_y NE 9999)
valid=MAKE_ARRAY(N_ELEMENTS(data_x),/LONG)
IF valid_x[0] NE -1 THEN valid[valid_x]=1
IF valid_y[0] NE -1 THEN valid[valid_y]=valid[valid_y]+1
valid=TEMPORARY(WHERE(valid EQ 2,count))
plot,data_x[valid],data_y[valid]
END
regards,
R.Bauer
|
|
|