我是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)=
等等。
希望这很清楚, 最好。
答案 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
您也可以使用列表或散列而不是大型数组。数组更快,但它们必须是连续的内存,因此根据数据大小可能会出现问题。