【发布时间】:2022-11-17 06:22:56
【问题描述】:
我正在尝试自动化 IDL 中的代码,该代码需要创建一些 .dat 文件并将它们读入数组。这些文件中的每一个都有 4 列,但行数不同,我不确定如何设置它以便每次自动使数组适合行数。
openr, lun, +field+'_'+color+'.dat', /get_lun
array = fltarr(4, 380)
readf, lun, array
outlier=array[0,*]
mag=array[1,*]
ra=array[2,*]
dec=array[3,*]
position2 = [outlier, mag, ra, dec]
free_lun, lun
return, position2
这是我正在使用的当前代码块,我刚刚一直在更改每个文件的数组值,这变得很乏味,如果数组值设置得太高,它也不会起作用。
下一部分是我很好奇的东西,但它已经成功地解决了大部分问题,但我仍然想问一下是否可以像其他代码一样重新设计它:
我也有一个类似的代码,它创建了我正在阅读的原始文件(抱歉,我知道它有点乱,我是 IDL 的新手):
i=0
position = []
this=[]
OpenW, lun, +field+'_'+color+'.dat', /get_lun
while i lt 16000 do begin ;typically 16798
outlier = plot_data[0,i]
mag=plot_data[1,i]
ra = plot_data[2,i]
dec=plot_data[3,i]
if outlier lt 0.0 then begin
PrintF, lun, outlier, mag, ra, dec
;
endif
position=[outlier, mag, ra, dec]
i=i+1
endwhile
...它读取一个大的 .sav 文件并将其转换为一个 4 列数组,这样我就可以使用我在之前代码中使用的离群值创建新文件。我不确定如何打开或读取 .sav 文件,所以我使用了在我之前从事该项目的人的旧代码,但是 16798 的大小不适用于每个 .sav 文件,所以我减少了它,但我确实想看看我是否可以修复它,所以我不会从所有其他数据中排除 ~700 点以容纳少量其他文件。有没有办法使用类似的代码来修复这里的第一个代码?
对不起,知道有很多问题,我们将不胜感激任何帮助!
【问题讨论】:
标签: arrays idl-programming-language