[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: FOR statement
Eli Beckerman <ebeckerman@cfa.harvard.edu> writes:
> Hey,
>
> I just tried running a FOR loop in the hopes
> of incrementing the variable "i" by steps of 0.25 as follows:
>
> radius=fltarr(1000)
> FOR i=0.0, 100.0, 0.25 DO BEGIN
>
> radius(i)=i
>
> ENDFOR
>
>
> And what I end up with is an array that starts
> with the value 0.75 and is incremented by steps of 1.
>
> I'm following the convention of the FOR statement as
> presented in IDL's online help. What am I doing wrong?!
You appear to be mixing the semantics of indexing with assignment.
What do you think happens when you do radius(0.25) = 0.25, which is
followed by radius(0.5) = 0.5 and radius(0.75) = 0.75? IDL
automatically converts floating point array indices into integers by
rounding down, so all of the statements I just mentioned affect the
same array element, and 0.75 supercedes because it is last.
You probably want:
FOR i=0.0, 100.0, 0.25 DO radius(i*4)=i
Or better yet:
FOR i=0, 999 do radius(i) = i * 0.25
(which avoids the ambiguity of indexing by a floating point number)
Or even better:
radius = findgen(400)*0.25
(avoids FOR loops altogether)
Also, why do you have a 1000 element array when you only fill the
first 400 elements?
Craig
--
--------------------------------------------------------------------------
Craig B. Markwardt, Ph.D. EMAIL: craigmnet@cow.physics.wisc.edu
Astrophysics, IDL, Finance, Derivatives | Remove "net" for better response
--------------------------------------------------------------------------