试图获得线性方程y = m*x + c
。我有以下几行代码,试图向数组添加标量。
m = 1.1; c = 0.11;
x = rand(1,2)
1×2 Array{Float64,2}:
0.920045 0.660015
y = m*x + c
ERROR: MethodError: no method matching +(::Array{Float64,2}, ::Float64)
Closest candidates are:
+(::Any, ::Any, ::Any, ::Any...) at operators.jl:502
+(::Bool, ::T<:AbstractFloat) where T<:AbstractFloat at bool.jl:112
+(::Float64, ::Float64) at float.jl:395
...
Stacktrace:
[1] top-level scope at none:0
当前使用Julia 1.0。直接向数组添加标量不起作用。我认为在以前的版本中这可以正常工作。
标量乘法工作
m*x
1×2 Array{Float64,2}:
1.01205 0.726016
但是我必须定义另一个数组,然后如图所示执行加法。
c = [0.11 0.11]
y = m*x + c
1×2 Array{Float64,2}:
1.12205 0.836016
这不是开销吗?当我可以对数组执行标量乘法
m*x
但不能对加法执行时,它有什么区别?
最佳答案
我想这已经变得更加严格了。
在Julia
语法中(类似于MATLAB
),+
和*
对全等数组进行操作。
对于按元素操作,应使用.+
和.*
。
奇怪的是,这对于*
似乎无关紧要,但对于+
则无关紧要。
无论如何,以下两项工作均可:
y = m * x .+ c
和:
y = m .* x .+ c
关于arrays - 在 Julia 中将标量添加到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52334857/