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

Home » Public Forums » archive » turn a string value into variable name
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: turn a string value into variable name [message #63125 is a reply to message #63041] Wed, 29 October 2008 07:55 Go to previous messageGo to previous message
loebasboy is currently offline  loebasboy
Messages: 26
Registered: August 2008
Junior Member
On 29 okt, 14:34, David Fanning <n...@dfanning.com> wrote:
> loebasboy writes:
>> On 23 okt, 23:56, David Fanning <n...@dfanning.com> wrote:
>>> Nick writes:
>>>> I am restoring over 100 .sav files and creating structures for
>>>> analysis. =A0Each .sav represents a differenct scenario and ideally I
>>>> would like to name the created structure in sequential format (case1,
>>>> case2...casen).
>
>>>> To pull the data in I am using a for loop (all .sav have identical
>>>> array names) and I'd like to use the counter to name the variable. =A0I=
>> s
>>>> it possible to turn a string into a variable name?
>
>>> The EXECUTE command can do this:
>
>> Thank you David, I had the same question !
>
> I'm glad the answer is helpful, but I would say in general
> that 9 people out of 10 who are writing code like this
> are *probably* doing the wrong thing. That is to say,
> the good reasons for creating variables on the fly,
> inside a procedure, are few and far between. I'd look
> pretty hard for alternatives before I ever coded something
> like this up.
>
> Cheers,
>
> David
>
> --
> David Fanning, Ph.D.
> Fanning Software Consulting, Inc.
> Coyote's Guide to IDL Programming:http://www.dfanning.com/
> Sepore ma de ni thui. ("Perhaps thou speakest truth.")- Tekst uit oorspronkelijk bericht niet weergeven -
>
> - Tekst uit oorspronkelijk bericht weergeven -

To know if my code is good coding I'll explain myself why I want to
use this type of coding.

I want to write function to read data out of a HDF5 file with a
certain structure. The HDF5 file consists of a digital aerial image
with callibration information per band and such. What I wanted to do
is that I want to read in the central wavelength of a band, analyse it
and define the name of that band so that I can write the data of the
band in a variable with the right name of that band. Lets say that the
central wavelength of this band is 752 nm, I would like to write the
information of this band in the variable "NIR". So I first read in the
central wavelength of a certain band, compare it with a reference
value (depends on the sensor), and then write the information of the
band in the right named variable. In this way I could do analyses with
logical named variables...for instance, the calculation of the NDVI
simply becomes (NIR-R)/(NIR+R) in the code.

The code:

FOR m = 0, nr_bands[0]-1 DO BEGIN
ctrlwav_str = string("/SensorData/Band",string(m+1,
format='(I03)'),"/SpectralResponse/CentralWavelength")
dataset_id = H5D_OPEN(file_id, ctrlwav_str)
ctrlwav[m] = H5D_READ(dataset_id)
H5D_CLOSE, dataset_id
IF (abs(ctrlwav[m] - color_id[0]) LT 0.015) THEN
col_band[m] = "PAN"
IF (abs(ctrlwav[m] - color_id[1]) LT 0.015) THEN
col_band[m] = "B"
IF (abs(ctrlwav[m] - color_id[2]) LT 0.015) THEN
col_band[m] = "G"
IF (abs(ctrlwav[m] - color_id[3]) LT 0.015) THEN
col_band[m] = "R"
IF (abs(ctrlwav[m] - color_id[4]) LT 0.015) THEN
col_band[m] = "NIR"
data_str = string("/SensorData/Band",string(m+1,
format='(I03)'),"/SensorData")
dataset_id = H5D_OPEN(file_id, data_str)
tmp = Execute(col_band[m] + ' = H5D_READ(dataset_id)')
H5D_CLOSE, dataset_id
ENDFOR
[Message index]
 
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Read Message
Previous Topic: IDL-python bridge issue for MacOS Sierra 10.12.2 (Library not loaded: libpython2.7.dylib)
Next Topic: Image registration

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

Current Time: Wed Oct 08 16:06:38 PDT 2025

Total time taken to generate the page: 0.00479 seconds