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

Home » Public Forums » archive » Re: index arrays of structures
Show: Today's Messages :: Show Polls :: Message Navigator
E-mail to friend 
Switch to threaded view of this topic Create a new topic Submit Reply
Re: index arrays of structures [message #59222] Sat, 15 March 2008 21:04 Go to next message
raghuram is currently offline  raghuram
Messages: 32
Registered: February 2008
Member
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
Re: index arrays of structures [message #59227 is a reply to message #59222] Sat, 15 March 2008 19:31 Go to previous messageGo to next message
Vince Hradil is currently offline  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.
Re: index arrays of structures [message #59228 is a reply to message #59227] Sat, 15 March 2008 14:07 Go to previous messageGo to next message
Vince Hradil is currently offline  Vince Hradil
Messages: 574
Registered: December 1999
Senior Member
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
Re: index arrays of structures [message #59318 is a reply to message #59222] Sun, 16 March 2008 05:49 Go to previous message
Vince Hradil is currently offline  Vince Hradil
Messages: 574
Registered: December 1999
Senior Member
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.
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: IDL 7.0 start error with segmentation fault
Next Topic: Longstanding Map Overlay Problem Solved!

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

Current Time: Wed Oct 08 19:32:17 PDT 2025

Total time taken to generate the page: 0.00618 seconds