comp.lang.idl-pvwave archive
Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado

Home » Public Forums » archive » index arrays of structures
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Return to the default flat view Create a new topic Submit Reply
Re: index arrays of structures [message #59312 is a reply to message #59229] Sun, 16 March 2008 12:19 Go to previous message
raghuram is currently offline  raghuram
Messages: 32
Registered: February 2008
Member
On Mar 16, 5:49 am, Vince Hradil <hrad...@yahoo.com> wrote:
> 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.- Hide quoted text -
>
> - Show quoted text -

Hi Vince,

I combined the ideas and it seems to have worked.
The file_search method is storing the filenames in a string array. So,
if i read them all one by one into data[*,*,numfiles-1], it is
placing each files[i] into the corresponding location in data[*,*,i].
This way i am able to access each file, and then compute the mean, for
e.g.

Here's the code:

pro structures_simple

dir1='D:\trials'
cd,dir1
files=FILE_SEARCH('*[^\.{hdr}]', /QUOTE,count=numfiles)
print,files
print,numfiles

data=fltarr(2179,761,numfiles)

tempval = fltarr(2179,761)
for i=0L, numfiles-1 do begin
named=files(i)

openr,1,named
readu,1,tempval
close,1
data[*,*,i]=tempval
avg=mean(data[*,*,i],/nan)
print,avg
help,data[*,*,i]
endfor

return

end

What do you think ?

-Raghu
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: Re: Interactive Image Locations and Values
Next Topic: iTools hardware rendering

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ] [ PDF ]

Current Time: Thu Oct 23 03:35:56 PDT 2025

Total time taken to generate the page: 1.92209 seconds