IDL读取多个文件

时间:2012-06-22 12:28:16

标签: arrays readfile idl-programming-language

我是IDL的新手,我需要实现以下目标: 基本上我所要做的就是读取不同的文件并在阅读时创建不同的数组。

所以我想的是:

files=dialog_pickfile(/multi, filter=filter, path=path, title=title)
n_files=n_elements(files)
for i=0, n_files-1 do begin
openr, lun, /get_lun, files[i]
readf, lun, data

但是在这一点上,如何通过跟踪例如数据来创建不同的数组。文件名。

例如:

arrayfile1(i,j,k)=
arrayfile2(i,j,k)=

等等。

希望这很清楚, 最好。

1 个答案:

答案 0 :(得分:2)

这样的事情怎么样?

files = dialog_pickfile(/multiple_files, filter=filter, path=path, $
                        title=title)
n_files = n_elements(files)

; check if the user cancels the dialog
if (n_files eq 1 && files[0] eq '') then n_files = 0

full_data = fltarr(nfiles, ni, nj, nk)
data = fltarr(ni, nj, nk)

for i = 0, n_files - 1 do begin
  openr, lun, /get_lun, files[i]
  readf, lun, data
  full_data[i, 0, 0, 0] = data
  free_lun, lun
endfor

您也可以使用列表或散列而不是大型数组。数组更快,但它们必须是连续的内存,因此根据数据大小可能会出现问题。