将数据写入文件中的列(IDL)

时间:2016-05-15 20:19:27

标签: idl-programming-language

我正在尝试将一些数据写入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

最好的问候

2 个答案:

答案 0 :(得分:0)

您应该阅读格式化输出的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

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

答案 1 :(得分:0)

听起来你有两个向量。一个具有单个值,一个具有平方值。这是你能做的:

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