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

Read values from multiple files in IDL

我有几个文件,我试图从中提取亮度温度 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

你没说变量BT是什么size/type。我假设它是一个浮点标量,但如果不是,您将修改下面 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)。
  • 对字符串文字使用单引号而不是双引号。

使用 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