我在Julia中寻找一些与Matlab相似的功能
save('myfile.mat', 'myvar1', 'myvar2')
例如,使用HDF5.jl,很容易做到
@write filename myvar1 myvar2
但是这需要我确切地知道我要写入文件的变量。
我希望能够在函数范围内选择在运行时编写的变量,并使用符号或字符串指定其名称。
vars = [:myvar1, :myvar2]
@write filename vars
实现这一目标的最佳方法是什么?
修改
我知道我可以使用JLD.jl中的save
作为save("file.jld", "myvar1", myvar1)
。但我希望能够保存编译时未知的变量列表,允许单次调用save
(或类似):
if condition
myvar1 = 1
vars = [:myvar1]
else
myvar1 = 1
myvar2 = 2
vars = [:myvar1, :myvar2]
end
# what goes here?
save(filename, vars...)
答案 0 :(得分:2)
您可能需要查看JLD package,它建立在HDF5之上,更好地支持用户定义的Julia类型。 HDF5和JLD都为save
提供了获取变量运行时名称的函数。
答案 1 :(得分:2)
您可以使用serialize
和deserialize
:
vars = Dict()
if condition
myvar = 1
vars[:myvar1] = myvar1
else
myvar1 = 1
myvar2 = 2
vars[:myvar1] = myvar1
vars[:myvar2] = myvar2
end
f = open( filename, "w" )
serialize( f, vars )
close( f )
阅读:
f = open( filename, "r" )
vars = deserialize( f )
close( f )
如果您不需要保存变量名,则可以使用数组而不是dict:vars = []