【问题标题】:IDL read RA and Dec formatIDL 读取 RA 和 Dec 格式
【发布时间】:2014-03-28 01:04:06
【问题描述】:

我想从文件中读取一些 RA 和 Dec 值以仅查找唯一的值。然后将其打印到一个新文件中,其中仅包含与每个 RA 和 12 月相关联的唯一信息。

该文件包含 starId, RA, Dec, Mag, Temp, ....

0001, 19:20:21.22, 37:40:43.5, 14.6, 5432, ...

readcol,'/filepath/filename.txt',starId,RA,DEC,Mag, Temp, format='L,A,A,D,D',/silent
idx = uniq(starId)

当我尝试将唯一列表写入文件时

openw,2,'/filepath/uniqlist.txt'
printf,2,[transpose([starId[idx]), transpose(RA[idx]), transpose(Dec[idx])]
close,2

我只得到 RA 和 Dec 的第一个值

谁能帮忙,我可以使用什么格式说明符来读取或写入文件的正确信息

【问题讨论】:

    标签: format idl


    【解决方案1】:

    我没有找到解决方案,但我确实找到了解决方法

    原来是 printf 语句中的数组括号 '[ ]' 似乎导致了问题。

    解决方法是使用循环打印以旧方式归档

    idx = uniq(starId)
    openw,2,'/filepath/uniqlist.txt'
    for i = 0, n_elements(idx)-1 do begin
        printf,2, starId[idx[i]],'   ',RA[idx[i]],'  ',DEC[idx[i]],
    endfor
    close, 2
    

    不理想,但确实有效。

    如果有人有更好的解决方案,我仍然会感兴趣。

    【讨论】:

      【解决方案2】:

      这样的事情怎么样?

      openw, lun, output_filename, /get_lun
      printf, lun, transpose([[starId[idx]], [RA[idx]], [dec[idx]]])
      free_lun, lun
      

      【讨论】:

      • 我在发布之前确实尝试过这个。看起来外部数组括号是如何导致“:”字符被解释为格式字符并终止对该字符串其余部分的处理。因此,在上面的示例中,我得到 0001、19、37。一次写入/打印一个似乎没问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 2015-06-14
      相关资源
      最近更新 更多