줄리아에서 .mat처럼 데이터를 저장하는 법

줄리아에서 .mat처럼 데이터를 저장하는 법

How to Save Data like matlab mat file

코드 1

JLD는 줄리아를 사용하면서 생기는 임시 데이터들을 저장할 수 있도록 해주는 패키지다. 퓨어 줄리아 프로젝트를 하면서 데이터의 입출력이 번거롭다면 유용하게 쓸 수 있다.

using JLD
cd(@__DIR__); pwd()

numpad = reshape(1:9, 3,3)
cube = zeros(Int64, 3,3,3)

save("mydata.jld", "numpad",numpad, "cube",cube)

mydata = load("mydata.jld")
mydata["numpad"]
mydata["cube"]

실행결과

julia> numpad = reshape(1:9, 3,3)
3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64:
 1  4  7
 2  5  8
 3  6  9

julia> cube = zeros(Int64, 3,3,3)
3×3×3 Array{Int64, 3}:
[:, :, 1] =
 0  0  0
 0  0  0
 0  0  0

[:, :, 2] =
 0  0  0
 0  0  0
 0  0  0

[:, :, 3] =
 0  0  0
 0  0  0
 0  0  0

julia> save("mydata.jld", "numpad",numpad, "cube",cube)
┌ Warning: JLD incorrectly extends FileIO functions (see FileIO documentation)
└ @ FileIO C:\Users\rmsms\.julia\packages\FileIO\5JdlO\src\loadsave.jl:215  

저장되는 파일의 확장자는 *.jld여야한다. 저장되는 각 데이터의 이름을 문자열로 주고 할당된 변수를 연달아 이어 적으면 그 데이터들이 하나로 묶여서 저장된다.

julia> mydata = load("mydata.jld")
┌ Warning: JLD incorrectly extends FileIO functions (see FileIO documentation)
└ @ FileIO C:\Users\rmsms\.julia\packages\FileIO\5JdlO\src\loadsave.jl:215  
Dict{String, Any} with 7 entries:
  "_creator\\JULIA_PATCH" => 0x00000001
  "cube"                  => [0 0 0; 0 0 0; 0 0 0]…
  "_creator\\WORD_SIZE"   => 64
  "numpad"                => [1 4 7; 2 5 8; 3 6 9]
  "_creator\\JULIA_MINOR" => 0x00000006
  "_creator\\ENDIAN_BOM"  => 0x04030201
  "_creator\\JULIA_MAJOR" => 0x00000001

불러온 결과는 보다시피 딕셔너리를 반환했다. 저장할 때 문자열로 주었던 이름들이 키Key로 들어가고 실제 데이터는 밸류Value에 있다. 다음과 같이 딕셔너리로써 참조하면 된다.

julia> mydata["numpad"]
3×3 reshape(::UnitRange{Int64}, 3, 3) with eltype Int64:
 1  4  7
 2  5  8
 3  6  9

julia> mydata["cube"]
3×3×3 Array{Int64, 3}:
[:, :, 1] =
 0  0  0
 0  0  0
 0  0  0

[:, :, 2] =
 0  0  0
 0  0  0
 0  0  0

[:, :, 3] =
 0  0  0
 0  0  0
 0  0  0

  1. https://github.com/JuliaIO/JLD.jl ↩︎

댓글