【问题标题】:Writing Data into columns in a file (IDL)将数据写入文件中的列 (IDL)
【发布时间】:2016-05-15 20:19:27
【问题描述】:

我正在尝试将一些数据写入 IDL 的列中。

假设我正在计算“k”和“k**2”,那么我会得到:

1 1

2 4

3 9

。 .

等等。

如果我把它写到一个文件中,它看起来像这样:

1 1 2 4 3 9 。 .

我对应的代码如下:

pro programname

openw, 1, "filename"
.
. calculating some values
.

printf, 1, value1, value2, value3
close,1
end

最好的问候

【问题讨论】:

  • 小的语法改进、代码格式化、引用输出

标签: idl-programming-language


【解决方案1】:

您可能应该阅读有关格式化输出的 IDL 文档,以了解所有详细信息。

我不明白您的 printf 中的“value1、value2、value3”。如果我要这样做,我将有两个变量“k”和“k2”。然后我会使用转置或 for 循环进行打印:

IDL> k = [1:10]
IDL> k2 = k^2
IDL> print, transpose([[k], [k2]])
       1       1
       2       4
       3       9
       4      16
       5      25
       6      36
       7      49
       8      64
       9      81
      10     100
IDL> for i=0,n_elements(k)-1 do print, k[i], k2[i]
       1       1
       2       4
       3       9
       4      16
       5      25
       6      36
       7      49
       8      64
       9      81
      10     100

顺便说一句,如果你要使用堆栈溢出,你应该开始“接受”正确的答案。

【讨论】:

    【解决方案2】:

    听起来你有两个向量。一种是单值,一种是平方值。你可以这样做:

    pro programname
    
    openw, f, "filename", /GET_LUN
    .
    . calculating some values for k
    .
    k2 = k^2 ;<---This is where you square your original array.
    
    ;Merge the vectors into a single array. Many ways to do this.
    k = strtrim(k,2) ;<----------------------------Convert to string format
    k2 = strtrim(k2,2) ;<--------------------------Convert to string format
    merge = strjoin(transpose([[k],[k2]]),' ') ;<--Merge the arrays
    
    ;Now output your array to file the way you want to
    for i=0L, n_elements(k)-1 do printf, f, merge[i]
    
    ;Close the file and free the logical file unit
    free_lun, f
    

    结束

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-15
      • 2015-12-13
      • 1970-01-01
      • 2017-12-20
      • 2016-10-24
      • 1970-01-01
      • 2017-03-04
      • 1970-01-01
      相关资源
      最近更新 更多