Запись данных в столбцы в файле (IDL)

Я пытаюсь записать некоторые данные в столбцы в 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 ответа

Вам, вероятно, следует прочитать документацию IDL по форматированным выводам, чтобы получить все подробности.

Я не понимаю ваше "значение1, значение2, значение3" в вашем printf. Если бы я собирался сделать это, у меня было бы две переменные "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

Кстати, если вы собираетесь использовать переполнение стека, вы должны начать "принимать" правильные ответы.

Похоже, у вас есть два вектора. Один с единичными значениями и один с квадратными значениями. Вот что вы могли бы сделать:

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

конец

Другие вопросы по тегам