Raghu wrote:
> On Mar 15, 7:31=EF=BF=BDpm, Vince Hradil <hrad...@[EMAIL PROTECTED]
> wrote:
> > On Mar 15, 4:07 pm, Vince Hradil <hrad...@[EMAIL PROTECTED]
> wrote:
> >
> >
> >
> >
> >
> > > On Mar 15, 3:53 pm, Raghu <raghuram.narasim...@[EMAIL PROTECTED]
> wrote:
> >
> > > > Hi,
> >
> > > > With reference to my recent posting (IDL batch indexing), i
understo=
od
> > > > that i could structures. However, i haven't been able to figure
out
> > > > one step.
> >
> > > > Here is my code as of now:
> > > > ; I want to search for all the images(files) in the directory
trials=
,
> > > > read them into the structure named data, and access each file
within=
> > > > the structure.
> >
> > > > pro strcutres
> > > > dir1=3D'D:\trials'
> > > > cd,dir1
> > > > files=3DFILE_SEARCH('*[^\.{hdr}]', /QUOTE,count=3Dnumfiles)
> > > > i=3D0
> > > > while i lt numfiles do begin
> > > > named=3Dfiles(i)
> > > > print,named
> > > > data=3D{ID:'a',sizes:fltarr(2179,761)}
> > > > data=3Dreplicate(data,numfiles)
> > > > data.sizes=3Dfindgen(numfiles)
> > > > openr,1,named
> > > > readu,1,data[i].sizes
> > > > close,1
> > > > i=3Di+1
> > > > endwhile
> > > > end
> >
> > > > ERROR message- READU: Expression must be named variable in this
> > > > context: <FLOAT =EF=BF=BD =EF=BF=BD Array[2179, 761]>.
> >
> > > > I am getting the error here because it seems like i am not able to
> > > > read in the LUN 1 or named, into data[i].sizes.
> >
> > > > Where am i going wrong ?
> >
> > > > Raghu
> >
> > > Hoo boy - here you go.
> >
> > > 1-Yes, you need to use a named variable to readu
> > > 2-You already defined "sizes" (weird name, by the way, how about
> > > "values"), when you made the structure.
> >
> > > How about this:
> >
> > > pro strcutres
> > > dir1=3D'D:\trials'
> > > cd,dir1
> > > files=3DFILE_SEARCH('*[^\.{hdr}]', /QUOTE,count=3Dnumfiles)
> >
> > > data=3D{ID:'a',values:fltarr(2179,761)}
> > > data=3Dreplicate(data,numfiles)
> > > tempval =3D fltarr(2179,761)
> >
> > > for i=3D0L, numfiles-1 do begin
> > > named=3Dfiles(i)
> > > print,named
> >
> > > openr,1,named
> > > readu,1,tempval
> > > free_lun,1
> > > data[i].values =3D tempval
> >
> > > endfor
> >
> > > return
> > > end
> >
> > BTW - why do you want to use a structure again? =EF=BF=BDThe above
code =
makes
> > all the data.id's =3D 'a'.
> >
> > Why can't you just read the data into a matrix? =EF=BF=BDIf you want
the=
> > structure to contain the filename then add data[i].id =3D named inside
> > the loop.- Hide quoted text -
> >
> > - Show quoted text -
>
> Hi,
>
> Are you asking why i'm using structures in the first place ?
> If yes, my initial idea (from python lessons) was to create something
> like an empty array and then read in each file into this empty array
> by concatenation. That way each element would have a unique ID which i
> could use to access them.
> But it seems like i can't create an empty 2-d array of a certain size
> and number of files to be read ('numfiles' in my case).
> When you say create a matrix, is this what you meant ?
>
> I got the idea of using structures only from responses in my previous
> emails on 'batch indexing'.
>
> -R
I guess I'm still confused. I was suggesting just doing:
data =3D fltarr(nx,ny,numfiles)
then for each files[i] the image is data[*,*,i]
It's unique simply by the index.


|