我已经存储了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
答案 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提供的有用评论替换(即将弃用)语法