Запись данных в столбцы в файле (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
конец