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