在Julia中声明多个数组

时间:2014-09-25 15:43:12

标签: arrays julia

假设我需要声明(但不是初始化)五个10x10数组的值,比如A1 - A5。 Fortran对这种多数组声明有一个很好的语法:

REAL(8), DIMENSION(10,10) :: A1, A2, A3, A4, A5

然而,我所知道的朱莉娅唯一的方法更为丑陋:

A1 = Array(Float64, 10, 10)
A2 = Array(Float64, 10, 10)
A3 = Array(Float64, 10, 10)
A4 = Array(Float64, 10, 10)
A5 = Array(Float64, 10, 10)

有没有更简洁的方法在Julia中声明多个具有相同维度的数组?

2 个答案:

答案 0 :(得分:10)

感谢来自another question的@simonster的一些帮助,您可以使用元编程简洁地声明您的变量,而无需任何运行时开销,

for x = [:A1,:A2,:A3,:A4,:A5]
    @eval $x = Array(Float64,10,10)
end

但是,通过允许您动态生成名称,我们现在可以比Fortran更好一步了:

for x in [symbol("A"*string(i)) for i=1:100]
    @eval $x = Array(Float64,10,10)
end

这将分配100个阵列A1-A100。感谢@ rickhf12hs对此想法/实施的评论。

答案 1 :(得分:1)

假设可以创建一个包含结果五个数组的临时数组,可以使用数组解析:

A1, A2, A3, A4, A5 = [Array(Float64, 10, 10) for i = 1:5]