| Re: index arrays of structures [message #59227 is a reply to message #59222] |
Sat, 15 March 2008 19:31   |
Vince Hradil
Messages: 574 Registered: December 1999
|
Senior Member |
|
|
On Mar 15, 4:07 pm, Vince Hradil <hrad...@yahoo.com> wrote:
> On Mar 15, 3:53 pm, Raghu <raghuram.narasim...@gmail.com> wrote:
>
>> Hi,
>
>> With reference to my recent posting (IDL batch indexing), i understood
>> 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='D:\trials'
>> cd,dir1
>> files=FILE_SEARCH('*[^\.{hdr}]', /QUOTE,count=numfiles)
>> i=0
>> while i lt numfiles do begin
>> named=files(i)
>> print,named
>> data={ID:'a',sizes:fltarr(2179,761)}
>> data=replicate(data,numfiles)
>> data.sizes=findgen(numfiles)
>> openr,1,named
>> readu,1,data[i].sizes
>> close,1
>> i=i+1
>> endwhile
>> end
>
>> ERROR message- READU: Expression must be named variable in this
>> context: <FLOAT 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='D:\trials'
> cd,dir1
> files=FILE_SEARCH('*[^\.{hdr}]', /QUOTE,count=numfiles)
>
> data={ID:'a',values:fltarr(2179,761)}
> data=replicate(data,numfiles)
> tempval = fltarr(2179,761)
>
> for i=0L, numfiles-1 do begin
> named=files(i)
> print,named
>
> openr,1,named
> readu,1,tempval
> free_lun,1
> data[i].values = tempval
>
> endfor
>
> return
> end
BTW - why do you want to use a structure again? The above code makes
all the data.id's = 'a'.
Why can't you just read the data into a matrix? If you want the
structure to contain the filename then add data[i].id = named inside
the loop.
|
|
|
|