是的,1:n在Julia中有一些与Matlab非常相似的东西。是1:n。
但是有一些区别。Matlab 1:n会创建一个“行向量”,这很重要,因为Matlab在列上进行迭代。如果您看Matlab的1:n有趣之处,它会神奇地变成一个存储所有元素的密集数组,但是如果您仔细地避免看它,我相信它可以避免为它完全分配空间-这就是Matlab的linter推荐使用(1:n)而不是的原因[1:n]。
相反,Julia's 1:n是真正的列向量,始终只使用两个整数来定义自己。实际上,它将所有元素真正存储到内存中的唯一时间是您是否要求(例如,使用collect)。但是,在几乎所有情况下,都可以将其像真实矢量一样使用,而无需存储其结果。它会非常高效地动态生成其元素。它可能看起来有点奇怪,因为它只打印为1:n,但实际上是一个数组。您甚至可以用它做线性代数:
julia> r = 1:4
1:4
julia> r[3]
3
julia> A = rand(0:2, 3, 4)
3×4 Array{Int64,2}:
0 1 2 2
1 1 1 2
1 0 2 1
julia> A * r
3-element Array{Int64,1}:
16
14
11
Run Code Online (Sandbox Code Playgroud)
我想我一直在寻找
collect(1:n)
Run Code Online (Sandbox Code Playgroud)