配列の出力(print) †ある2次元配列 ϕ (Array{T,2} where T<:Float64 とか) を,フォーマット指定して出力することを考える. フォーマットにこだわりがなければ… †Base.print_array で配列の出力ができる. open("out.txt","w") do file Base.print_array(file, ϕ) end 空白区切りでもよく,浮動小数点数の桁を気にする必要がなければ,これ以下は特に読む必要はない. Matrixで出力 †【2020年1月 若干修正】 ϕ11,ϕ12,ϕ13 ... ϕ1m ϕ21,ϕ22,ϕ23 ... ϕ2m ϕ31,ϕ32,ϕ33 ... ϕ3m ... ϕn1,ϕn2,ϕn3 ... ϕnm のように(数字は行列の添字を表す),行列の見たままファイルへ print したいときは, using Printf open( "matrix_out.csv", "w" ) do fileIO [(if j != m @printf(fileIO, "%11.3e,", ϕ[i,j]) # 最後の列以外.カンマ区切り else @printf(fileIO, "%11.3e\n", ϕ[i,j]) # 最後の列で改行 end) for j=1:m, i=1:n] end 若干面倒な書き方なので,もっとスマートな方法があったら知りたい. 3-column の Vector で出力 †x11, y11, ϕ11 x21, y21, ϕ21 x31, y31, ϕ31 ... x12, y12, ϕ12 x22, y22, ϕ22 x32, y32, ϕ32 ... xnm, ynm, ϕnm のように縦長に変数ごとに3列で出力する場合は下記の通り. # ファイル展開, 3列 出力例 open( "tmp.txt", "w" ) do fileIO [@printf(fileIO, "%8.3f %8.3f %11.3e\n", x[k],y[k],ϕ[k]) for k=1:length(ϕ[:])] end @printf の format 指定は,直接文字列""を入力する以外の方法ではエラーになった(String変数ではだめだった). |