Is there a better way to locate a value in a table (or array)? I would
like to come in with an array of radaince values and convert them to
temperatures. The method below only takes the one number (rad) then
search for the best match in the table (or array).
If you can thing of a better method, send me a note.
Kelly Dean
dean@cira.colostate.edu
=================================================
FUNCTION IS_THERE_A_BETTER_WAY, rad
WVTEMParr = FINDGEN(200) + 170.
WVRADarr = FLTarr(200)
WVRADarr(0:9) = [ 0.015, 0.016, 0.018, 0.019, 0.020, 0.022,
0.024, 0.025, 0.027, 0.029 ]
WVRADarr(10:19) = [ 0.031, 0.034, 0.036, 0.039, 0.041, 0.044,
0.047, 0.050, 0.053, 0.057 ]
WVRADarr(20:29) = [ 0.061, 0.064, 0.069, 0.073, 0.077, 0.082,
0.087, 0.092, 0.098, 0.104 ]
WVRADarr(30:39) = [ 0.110, 0.116, 0.122, 0.129, 0.137, 0.144,
0.152, 0.160, 0.169, 0.178 ]
WVRADarr(40:49) = [ 0.187, 0.197, 0.207, 0.218, 0.229, 0.241,
0.253, 0.265, 0.278, 0.292 ]
WVRADarr(50:59) = [ 0.306, 0.320, 0.335, 0.351, 0.367, 0.384,
0.401, 0.420, 0.438, 0.458 ]
WVRADarr(60:69) = [ 0.478, 0.499, 0.520, 0.542, 0.565, 0.589,
0.614, 0.639, 0.665, 0.692 ]
WVRADarr(70:79) = [ 0.720, 0.749, 0.779, 0.809, 0.841, 0.873,
0.907, 0.941, 0.977, 1.013 ]
WVRADarr(80:89) = [ 1.051, 1.090, 1.129, 1.170, 1.212, 1.256,
1.300, 1.346, 1.393, 1.441 ]
WVRADarr(90:99) = [ 1.490, 1.541, 1.593, 1.647, 1.701, 1.758,
1.815, 1.874, 1.935, 1.997 ]
WVRADarr(100:109) = [ 2.060, 2.125, 2.192, 2.260, 2.330, 2.401,
2.474, 2.549, 2.626, 2.704 ]
WVRADarr(110:119) = [ 2.784, 2.866, 2.949, 3.034, 3.122, 3.211,
3.302, 3.395, 3.490, 3.586 ]
WVRADarr(120:129) = [ 3.685, 3.786, 3.889, 3.994, 4.101, 4.210,
4.322, 4.435, 4.551, 4.669 ]
WVRADarr(130:139) = [ 4.790, 4.912, 5.037, 5.164, 5.294, 5.426,
5.560, 5.697, 5.836, 5.978 ]
WVRADarr(140:149) = [ 6.122, 6.269, 6.418, 6.570, 6.724, 6.881,
7.041, 7.203, 7.369, 7.536 ]
WVRADarr(150:159) = [ 7.707, 7.880, 8.057, 8.236, 8.418, 8.602,
8.790, 8.981, 9.174, 9.371 ]
WVRADarr(160:169) = [ 9.570, 9.773, 9.978, 10.187, 10.399, 10.614,
10.832, 11.053, 11.277, 11.505 ]
WVRADarr(170:179) = [11.736, 11.970, 12.207, 12.448, 12.692, 12.939,
13.190, 13.444, 13.701, 13.962 ]
WVRADarr(180:189) = [14.226, 14.494, 14.766, 15.040, 15.319, 15.601,
15.886, 16.176, 16.468, 16.765 ]
WVRADarr(190:199) = [17.065, 17.369, 17.676, 17.988, 18.303, 18.622,
18.944, 19.271, 19.601, 19.935 ]
FOR i = 0 ,198 DO BEGIN
IF ( rad GT WVRADarr(i) AND rad LE WVRADarr(i+1) ) THEN BEGIN
TempK = WVTEMParr(i)
ENDIF
ENDFOR
RETURN, TempK
END
|