/ / Записване на данни в колони във файл (IDL) - idl-програмен език

Писане на данни в колони във файл (IDL) - 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

С Най-Добри Пожелания

Отговори:

0 за отговор № 1

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

Не разбирам "value1, value2, value3" във вашия printf. Ако щях да направя това, бих имал две променливи "k" и "k2". Тогава бих отпечатал, използвайки или транспониране, или loop :

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

Между другото, ако ще използвате препълване на стека, трябва да започнете да "приемате" правилните отговори.


0 за отговор № 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

край