在Julia 0.7中使用linspace

时间:2018-06-21 18:24:26

标签: julia

我对在Julia 0.7中使用linspace感到困惑。这是我在REPL中输入的内容和结果:

julia> a = linspace(0.1,1.1,6)
┌ Warning: `linspace(start, stop, length::Integer)` is deprecated, use `range(start, stop=stop, length=length)` instead.
│   caller = top-level scope
└ @ Core :0
0.1:0.2:1.1

我的问题是关于不建议使用的警告和建议的范围使用。 range语句与linspace命令的作用不同。

如果输入a = linspace(0.1,1.1,6)并收集(a),则会得到以下信息:

julia> collect(a)
6-element Array{Float64,1}:
 0.1
 0.3
 0.5
 0.7
 0.9
 1.1

如果输入b = range(0.1,1.1,6)并收集(b),则会得到:

julia> collect(b)
6-element Array{Float64,1}:
 0.1
 1.2
 2.3
 3.4
 4.5
 5.6

显然不一样。

为什么不赞成使用linspace(也许是一个不同的问题),并建议使用非等效范围命令?

我的实际问题是:继续使用linspace以获得所需的预期结果是否安全?如果没有,我应该改用什么?

2 个答案:

答案 0 :(得分:6)

在弃用之后,现在是:

julia> range(0.1, stop = 1.1, length = 6) |> collect
6-element Array{Float64,1}:
 0.1
 0.3
 0.5
 0.7
 0.9
 1.1

在您的示例中,第二个参数是step,而不是stop,请注意,此方法也已弃用,您必须立即使用关键字参数:

julia> @which range(0.1, 1.1, 6)
range(start, step, length) in Base at deprecated.jl:53

答案 1 :(得分:5)

您应该使用here中所述的LinRange

  

在其开始和停止之间具有len线性间隔的元素的范围。间距的大小由len控制,该长度必须为Int。

julia> LinRange(1.5, 5.5, 9)
9-element LinRange{Float64}:
 1.5,2.0,2.5,3.0,3.5,4.0,4.5,5.0,5.5