在循环中读取文件[julia]?

时间:2016-09-05 16:08:28

标签: file file-io julia

我已经存储了10个文件:file1,file2直到file10。 l编码for循环以通过声明变量dc dc [1]来读取文件,直到对应于每个文件file1file10的dc [10]但是我得到错误:未定义变量dc。

如何将dc初始化为500乘500个元素

dc [1]#(500,500)个元素 ....... dc [10]#(500,500)元素

for i in 1:10
        dc[i]=jldopen("/path to file/file$i.jld", "r")  do file
             read(file, "a")  # alternatively, say "@write file mini_batch"
             end
     end

1 个答案:

答案 0 :(得分:2)

首先需要初始化对象dc,例如

dc = Array{Any}(10)

请注意,这对性能不是很好 - 如果您可以为函数,数组等指定类型,Julia的工作要好得多。但是,因为从示例中可以清楚地知道元素是什么,所以输入Any至少会创建一些适合您情况的通用内容。并且,如果表现不是特定问题,那么它暂时会好起来。

看起来您的对象可能是500x500阵列类型对象。如果确实如此,那么您可以预先分配一个包含10个包含Float64类型对象的二维数组的数组(假设这是您拥有的数据类型)。 E.g:

dc = Array{Array{Float64, 2}}(10)

如果您特别想要预先分配500x500阵列,问题会稍微复杂一些。

请注意,初始化数组的语法是:

  

数组{T}(变暗)

     

使用元素类型T构造未初始化的密集数组.dims可以是元组或一系列整数参数。语法Array(T,dims)也可用,但已弃用。

Julia中的数组类型包含维度的数量,但不包括这些维度的大小。因此,如果您想将dc专门初始化为500x500数组的数组,那么您最好理解:

dc = [Array{Float64}(500,500) for i in 1:10];

注意:根据@David Sanders提供的有用评论替换(即将弃用)语法