1

我对 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)=

等等。

希望这很清楚,最好的。

4

1 回答 1

3

这样的事情怎么样?

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

您还可以使用列表或哈希来代替大数组。数组更快,但它们必须是连续的内存,因此这可能是一个问题,具体取决于数据大小。

于 2012-06-22T16:51:32.447 回答