[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Bad data in structure (NaN HowTo?)
Randall Skelton <rhskelto@atm.ox.ac.uk> writes:
> I have an array of large structures which occasionally is filled (via an
> external C program) and passed into IDL with -12345 signifying the data
> for that element is lost. I would like to convert the occurances of
> -12345 to NaN's in IDL but I am a little perplexed on how to do this.
>
> I had hoped that since this is technically an 'array' (albeit an array of
> structures) I would just be able to use the 'where' command; alas, it
> appears that structures are not allowed in the where command:
>
> B = where(atrl eq -12345, count)
> % Struct expression not allowed in this context: ATRL.
Hi Randall--
You have the 500-pound gorilla approach from Pavel. However, if your
-12345's appear in a few well defined fields in the structure, then
it's much easier and more efficent to do the following:
wh = where(atrl.field1 EQ -12345, ct)
if ct GT 0 then atrl(wh).field1 = -12345
However, if there are lots of fields then the 500-pound gorilla may be
what you need. You mentioned that integers and strings are the same
way. How can this be? There is no such thing as a NaN string or
integer.
If you do it in C, I would propose that you pass in the value of NaN
into your C procedure and then just use it there. That should be the
most portable. Then from the IDL side you would call your routine
with !VALUES.NAN
Cheers,
Craig
--
--------------------------------------------------------------------------
Craig B. Markwardt, Ph.D. EMAIL: craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
--------------------------------------------------------------------------