从IDL中的多个文件中读取值

时间:2016-02-24 15:58:41

标签: idl-programming-language

我有几个文件,我试图提取亮度温度变量BT。我想把所有变量放到一个数组中。这就是我现在所拥有的。我已经打开了所有文件,但我无法弄清楚如何组合所有值。

filelist = FINDFILE(in_path+"ATMS-v11r1_npp_s"+date_str+"*nc",count=nfiles)

FOR i = 0, nfiles -1 DO BEGIN

PE1_fid=NCDF_OPEN(filelist(i))
field = 'BT'
NCDF_VARGET, pe1_fid, field, pe1_data

ENDFOR

2 个答案:

答案 0 :(得分:3)

你没有说BT变量的大小/类型。我假设它是一个浮点标量,但如果不是,你会修改下面bt的定义来匹配。

filelist = file_search(in_path + 'ATMS-v11r1_npp_s' + date_str + '*nc', $
                      count=nfiles)
bt = fltarr(nfiles)

for i = 0, nfiles - 1 do begin
  pe1_fid = ncdf_open(filelist[i])
  field = 'BT'
  ncdf_varget, pe1_fid, field, e1_data
  bt[i] = e1_data
endear

我还更改了一些关于代码的其他内容:

  • FINDFILE已过时,请使用FILE_SEARCH
  • 不要使用括号对数组进行索引,请使用括号(和compile_opt strictarr)。
  • 对字符串文字使用单引号而不是双引号。

答案 1 :(得分:0)

使用IDL版本8或更高版本,您可以稍微简化一下代码,每个 e1_data 字段包含多少条目:

filelist = FILE_SEARCH(in_path + 'ATMS-v11r1_npp_s' + date_str + '*nc', count=nfiles)

bt = []
FOR i = 0,nfiles-1 DO BEGIN
  pe1_fid = = ncdf_open(filelist[i])
  field = 'BT'
  ncdf_varget, pe1_fid, field, e1_data
  bt = [bt, e1_data]
ENDFOR