Опитвам се да запиша някои данни в колони в 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
край