heights=[0.,120,160.,512.,1000.,1200.,2000.,3300,4000.];(metres) temperatures=[293.,-999.,-999.,290.,286.,-999.,276.,-999.,270.];(Kelvin) -999. is undefinedYou could plot it with
set_plot,'x' window,0,retain=2 plot,temperatures,heightsbut it's not much use. Try
w_defined=where(heights ge 0 and temperatures ge 0,cw_defined) if cw_defined gt 0 then plot,temperatures(w_defined),heights(w_defined), xtitle='Temperature (K)',ytitle='Height (m)' else $ print, 'No useful data to plot'(note the dollar line continuation sign).
You can count how many elements have fulfilled the criteria. The help pages state:
Result = WHERE( Array_Expression [, Count] [, COMPLEMENT=variable] [, /L64] [, NCOMPLEMENT=variable] )This means where is a function (so is called using ``blah=where(array)''). It has one compuslory parameter (`` Array_Expression''). An optional (shown by the ``[]'')parameter (``count''). Three keywords (``COMPLEMENT'', ``L64'' and ``NCOMPLEMENT'').
*** Where is incredibly useful *** . You can use it on an array of arbitrary dimension. For example, if you have read the modtrandata into an array called modtrandata:
modtran_while2,modtrandata w=where(modtrandata eq 1.60E-07,cw) help,w ; W LONG = Array[39] help,cw;CW LONG = 39where returns a vector of subscripts whatever the dimensions of the array. You can still use these to subscript the multi-dimensional array. e.g.
print,w 74 130 214 270 354 410 494 550 634 690 774 830 914 970 1054 1110 1194 1250 1334 1390 1474 1530 1614 1670 1754 1810 1894 1950 2034 2090 2174 2230 2314 2370 2454 2510 2594 2650 2734 help,modtrandata(w(0)) ; <Expression> FLOAT = 1.60000e-07 help,modtrandata(74) ; <Expression> FLOAT = 1.60000e-07 help,modtrandata(4,5) ;<Expression> FLOAT = 1.60000e-075 whole rows (remember we count from zero!) of 14 columns = 70 elements, the 5th element (i.e. the one subscripted by 4) of the 6th row (i.e the one subscripted by 5) = 5 more. So (4,5) is the 75th element and hence is subscripted by 74 (counting from zero remember!)