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

Home » Public Forums » archive » Strange array subscripting error
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
Strange array subscripting error [message #67133] Tue, 07 July 2009 02:27
robintw is currently offline  robintw
Messages: 37
Registered: March 2009
Member
Hi,

I'm getting the error "% Out of range subscript encountered: VALUES.",
but I can't work out why. I have three arrays (azimuths, zeniths and
values) each of which is set to a size of 360 * 90 (which is 32400). I
then have a loop which populates these arrays with values, but when
the loop gets to 32398 it stops and gives the error above.

I really can't understand what's going on here. I've made sure that
the variable I'm using to keep the array_index in is a long, in case
above 32398 it was going over a limit in a standard integer, but that
didn't help. The only way I've found to get round it is to manually
add three to my array declaration (ie. change it to fltarr((360*90) +
3)). That is obviously a very ugly hack, and ends up with me having
some blank unused array values at the end.

Does anybody have any ideas why this is happening and what I can do
about it? I've attached the code below:

PRO BRUNGER_HOOPER_MODEL, a0, a1, a2, a3, azimuths=azimuths,
zeniths=zeniths, values=values, s_theta, s_phi
sun_theta = s_theta*!DTOR
sun_phi = s_phi*!DTOR

; Initialise arrays
array_size = (360*90) + 3 ; BUG ALERT! When set to 360*90 (32400) it
seems to overrun at 32398, this is an ugly fix

azimuths = intarr(array_size)
zeniths = intarr(array_size)
values = fltarr(array_size)

FOR phi=0, 360-1 DO BEGIN
FOR theta=0, 90-1 DO BEGIN
; Convert the current phi and theta to radians
view_phi = phi*!DTOR
view_theta = theta*!DTOR

value = CALCULATE_SKY_VALUE(a0, a1, a2, a3, view_theta,
view_phi, sun_theta, sun_phi)

array_index = long((90*phi) + theta)

; Put the value into the array
values[array_index] = value
azimuths[array_index] = phi
zeniths[array_index] = theta

ENDFOR
ENDFOR

; Normalise the values
values = values / MAX(values)
END
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: nike clothing,nike shoes,online store,http://www.maidi2008.net air Jordan Shoes,Nike Air Jordans, Air Force Ones,Retro Air Jordan, Bape Hoodies,Bape shoes-Tencent Traveler|Jordan Shoes,Nike Air Jordans, Air Force Ones,Retro Air Jordan, Bape Hood
Next Topic: "idl___ is not available for this system (solaris2.x86_64)

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

Current Time: Wed Oct 08 13:59:55 PDT 2025

Total time taken to generate the page: 0.00421 seconds