如何在Julia中应用元素元素?

Ale*_*hin 7 julia

有一个功能 h(x) = ([1, x]' * [2, 3])[1]

让我们假设我想绘制并获得XY.一种可行的方法是遵循

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)

如果您正在寻找一种更"优雅"的方法,这里讨论为此问题添加新语法.