2014年11月3日月曜日

Juliaで固定配列

JuliaでArrayを使えばベクトルや行列計算できるけど、2とか3次元の点を表すのに可変長の配列を使うのはどうも無駄が多い気がする。自前で
immutable Vec
    x::Float64
    y::Float64
    z::Float64
end
とかやったけど、演算子とかを定義するのが面倒。

そんな問題を解決してくれるのがImuutableArrays
Julia0.3にはすでに採用されているので、
Using ImuutableArrays
v3 = Vector3{Float64}(1, 2, 3)
v2 = Vector2{Float64}(4, 5)

と書ける。デフォルトでは読み込んだ時に4次元まで作ってくれて、演算子の定義とかもやってくれている。(これがメタプログラミングの力か…)
しかも上で自分で定義したのより速い…

行列は
typealias Mat3d Matrix3x3{Float64}
とすれば使える。






0 件のコメント:

コメントを投稿