Raghu wrote:
> On Mar 15, 7:31�pm, Vince Hradil <hrad...@yahoo.com> wrote:
>> 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.- 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 = fltarr(nx,ny,numfiles)
then for each files[i] the image is data[*,*,i]
It's unique simply by the index.
|