Re: Question about storing arrays in pointer array. [message #79506 is a reply to message #79504] |
Thu, 08 March 2012 14:35   |
David Fanning
Messages: 11724 Registered: August 2001
|
Senior Member |
|
|
Ian writes:
>
> Hello All,
> I have a question regarding the storage of arrays within arrays. I am
> attempting to read in 14 data files with 5 vectors of 512 elements. I
> have attempted two methods:
>
>
> ;test attempting to read in variety of data and overplot it in a stack
> ;without y-axis and single x-axis
>
> boo=DBLARR(14, 512)
> ;boo=PTRARR(14)
> for x = 0,13,1 do begin
> rdcol, 'iz_diff_rot'+STRCOMPRESS(x,/REMOVE_ALL)
> +'.dat',p1,p2,p3,p4,p5
> print, i, " The dat file is: ", 'iz_diff_rot'+STRCOMPRESS(x,/
> REMOVE_ALL)+'.dat'
>
> ;attempt 1
> ;Fills the pointer array with 14 dbl arrays. Use boo=PTR....
> ; for i=0,13,1 do begin
> ; boo[i]=PTR_NEW(DBLARR(512))
> ; p5=boo[i]
> ; endfor
> ;endfor
>
> ;attempt 2
> ;Creates two dimensional array of 14 columns with 512 elements. Use
> boo=DBL....
> for i = 0,13,1 do begin
> for j = 0,511,1 do begin
> boo[i,j]=p5[j]
> endfor
> print, boo[i,300]
> endfor
> endfor
>
>
> END
>
> Attempt one using the pointer array provides 14 arrays but the values
> are all zero, can anybody give a suggestion on how to store the new p5
> in boo[i]?
Don't you want something like this:
numFiles = 14
boo = PtrArr(numFiles)
FOR j=0,numFiles-1 DO BEGIN
data = Read_Data(files[j])
boo[j] = Ptr_New(Reform(data), /No_Copy)
ENDFOR
Now, each pointer points to an array of 512 columns and 5 rows
(to make accessing each row faster!).
If you want the 5th vector of the 7th pointer:
thisRow = (*boo[6])[*,4]
Cheers,
David
--
David Fanning, Ph.D.
Fanning Software Consulting, Inc.
Coyote's Guide to IDL Programming: http://www.idlcoyote.com/
Sepore ma de ni thui. ("Perhaps thou speakest truth.")
|
|
|