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

时间:2016-04-01 05:53:36

标签: julia

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

假设我想绘制它并获得XY。一种可能的方法是遵循

X = [1 2 3]
Y = [h(xi) for xi in X]

但是,使用Julia中的elementwise运算符似乎也可以这样做吗?

不幸的是,使用点.h(X)为函数添加前缀并不起作用。

1 个答案:

答案 0 :(得分:12)

更新:julia v0.5中合并了f.(x)语法并且可用,请参阅the documentWIP

julia's Base中的

@vectorize_1arg可以让你的函数接受数组。使用此宏包裹h可能会解决问题。

以下是julia document

的示例
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

如果您正在寻找更“优雅”的方法,here is a discussion关于为此问题添加新的语法。