我开始在我的Julia代码中使用unicode cdot代替*,因为我觉得它更容易阅读。我以为它们是一样的,但显然有一点我不明白。有关于此的文件吗?
julia> 2pi⋅(0:1)
ERROR: MethodError: no method matching dot(::Float64, ::UnitRange{Int64})
Closest candidates are:
dot(::Number, ::Number) at linalg\generic.jl:301
dot{T<:Union{Float32,Float64},TI<:Integer}(::Array{T<:Union{Float32,Float64},1}, ::Union{Range{TI<:Integer},UnitRange{TI<:Integer}}, ::Array{T<:Union{Float32,Float64},1}, ::Union{Range{TI<:Integer},UnitRange{TI<:Integer}}) at linalg\matmul.jl:48
dot{T<:Union{Complex{Float32},Complex{Float64}},TI<:Integer}(::Array{T<:Union{Complex{Float32},Complex{Float64}},1}, ::Union{Range{TI<:Integer},UnitRange{TI<:Integer}}, ::Array{T<:Union{Complex{Float32},Complex{Float64}},1}, ::Union{Range{TI<:Integer},UnitRange{TI<:Integer}}) at linalg\matmul.jl:61
...
julia> 2pi*(0:1)
0.0:6.283185307179586:6.283185307179586
答案 0 :(得分:4)
dot
或⋅
与乘法(*
)不同。您可以输入?dot
:
help?> ⋅
search: ⋅
dot(x, y)
⋅(x,y)
Compute the dot product. For complex vectors, the first vector is conjugated. [...]
有关点积的详细信息,请参阅例如here
答案 1 :(得分:1)
好像你在混淆两个不同的运营商。 cdot别名dot
函数,而星号*
别名乘法例程。
我怀疑你想做点积。您看到的错误告诉您Julia不知道如何计算具有整数单位范围(Float64
)的标量浮点数(UnitRange{Int}
)的点积。如果你仔细想想,在这里使用dot
毫无意义。
相反,第二个命令2pi*(0:1)
计算标量与同一UnitRange
个对象的乘积。这简单地重新调整范围,朱莉娅有一个方法来做到这一点。
根据您的目的,您可以选择一些选项:
*
代替dot
(最简单)dot
方法以处理UnitRange
对象的重新缩放(可能没有帮助).*
(小心,不等于dot
!)