#author("2020-01-31T00:41:18+09:00","default:Miyashita","Miyashita") #author("2022-01-26T12:12:36+09:00","default:Miyashita","Miyashita") *配列の出力(print) [#l1ddcf3f] #contents ある2次元配列 ϕ (Array{T,2} where T<:Float64 とか) を,フォーマット指定して出力することを考える.~ **フォーマットにこだわりがなければ… [#t3e6ab0e] 良い function があることを教えてもらった.~ [[Juialang: print 入門 - Hello World から pretty-print まで - (Qiita)>https://qiita.com/goropikari/items/c5ae799d3ff2e789ee20]]~ Base.print_array で配列の出力ができる.~ 幅は自動で揃うようになっている.下記はファイルに出力するときの例. #codeprettify(lang-julia){{ open("out.txt","w") do file Base.print_array(file, ϕ) end }} 空白区切りでもよく,浮動小数点数の桁を気にする必要がなければ,これ以下は特に読む必要はない.~ ~ ** Matrixで出力 [#s38ebcb6] 【2020年1月 若干修正】 ϕ11,ϕ12,ϕ13 ... ϕ1m ϕ21,ϕ22,ϕ23 ... ϕ2m ϕ31,ϕ32,ϕ33 ... ϕ3m ... ϕn1,ϕn2,ϕn3 ... ϕnm のように(数字は行列の添字を表す),行列の見たままファイルへ print したいときは, #codeprettify(lang-julia){{ 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 で出力 [#mc05a2c8] x11, y11, ϕ11 x21, y21, ϕ21 x31, y31, ϕ31 ... x12, y12, ϕ12 x22, y22, ϕ22 x32, y32, ϕ32 ... xnm, ynm, ϕnm のように縦長に変数ごとに3列で出力する場合は下記の通り. #codeprettify{{ # ファイル展開, 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変数ではだめだった). ~ ただし @eval を使うとできることがわかった.[[@printg(@sprintf)のフォーマット>../@printf_variable_format]]に記載.