Jonathan Greenberg writes:
> I'm unfamiliar with the use of structures, but I'm guessing this is the
> answer.
No, when you don't understand something, the answer is always
"objects". :-)
In your case, it may be "pointers".
> Lets say I have some program generate arrays using the following
> algorithm:
>
> For I=1,5 do begin
> temparr=fltarr(i)
> Endfor
>
> I want to "collect" all of the temparr that are created within the loop such
> that I can access each array by some sort of index (which would be from 0 to
> 4) -- e.g. I want to be able to do something like:
>
> A = temparr at index 2
> Print,A
> --> (0,1)
>
> An obvious solution is to put "0s" in and make a 2d array, where the row is
> the index, so I get something like
>
> 0,0,0,0,0
> 0,1,0,0,0
> 0,1,2,0,0
> 0,1,2,3,0
> 0,1,2,3,4
>
> However, this takes up a lot of space and the nature of the algorithm I want
> to use I would like to have smaller arrays be "compressed" without having to
> crop them each time.
>
> What do I put inside the for loop to generate:
> 1:0
> 2:0,1
> 3:0,1,2
> 4:0,1,2,3
> 5:0,1,2,3,4
>
> ???
How about this:
IDL> a = PtrArr(5)
IDL> FOR j=0,4 DO a[j] = Ptr_New(Indgen(j+1), /No_Copy)
IDL> FOR j=0,4 DO Print, StrTrim(j+1) + ': ', *a[j]
1: 0
2: 0 1
3: 0 1 2
4: 0 1 2 3
5: 0 1 2 3 4
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.dfanning.com/
|