我对在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
Run Code Online (Sandbox Code Playgroud)
我的问题是关于弃用警告和建议使用范围.range语句与linspace命令的作用不同.
如果输入a = linspace(0.1,1.1,6)和collect(a),则会得到以下内容:
julia> collect(a)
6-element Array{Float64,1}:
0.1
0.3
0.5
0.7
0.9
1.1
Run Code Online (Sandbox Code Playgroud)
如果输入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
Run Code Online (Sandbox Code Playgroud)
这显然不一样.
为什么不推荐linspace(可能是一个不同的问题)和一个非等效范围命令?
我的实际问题是:继续使用linspace以获得它提供的所需结果是否安全,如果不是,我应该使用什么呢?
在弃用之后,它现在是:
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
Run Code Online (Sandbox Code Playgroud)
在您的示例中,第二个参数是a step,而不是stop,请注意此方法也已弃用,您现在必须使用关键字参数:
julia> @which range(0.1, 1.1, 6)
range(start, step, length) in Base at deprecated.jl:53
Run Code Online (Sandbox Code Playgroud)
您应该使用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
Run Code Online (Sandbox Code Playgroud)