有一个功能 h(x) = ([1, x]' * [2, 3])[1]
让我们假设我想绘制并获得X和Y.一种可行的方法是遵循
X = [1 2 3]
Y = [h(xi) for xi in X]
Run Code Online (Sandbox Code Playgroud)
但是,看起来在Julia中使用elementwise运算符也可以这样做吗?
不幸的是,使用点添加函数前缀.h(X)不起作用.
张实唯*_*张实唯 12
更新:f.(x)语句在julia v0.5中合并并可用,请参阅文档或WIP.
julia's Base中的@ vectorize_1arg可以使您的函数接受数组.h用这个宏包裹你可以解决问题.
这是julia文档的一个例子
julia> square(x) = x^2
square (generic function with 1 method)
julia> @vectorize_1arg Number square
square (generic function with 4 methods)
julia> methods(square)
# 4 methods for generic function "square":
square{T<:Number}(::AbstractArray{T<:Number,1}) at operators.jl:380
square{T<:Number}(::AbstractArray{T<:Number,2}) at operators.jl:381
square{T<:Number}(::AbstractArray{T<:Number,N}) at operators.jl:383
square(x) at none:1
julia> square([1 2 4; 5 6 7])
2x3 Array{Int64,2}:
1 4 16
25 36 49
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找一种更"优雅"的方法,这里讨论为此问题添加新语法.