有一个功能h(x) = ([1, x]' * [2, 3])[1]
假设我想绘制它并获得X
和Y
。一种可能的方法是遵循
X = [1 2 3]
Y = [h(xi) for xi in X]
但是,使用Julia中的elementwise运算符似乎也可以这样做吗?
不幸的是,使用点.h(X)
为函数添加前缀并不起作用。
答案 0 :(得分:12)
更新:julia v0.5中合并了f.(x)
语法并且可用,请参阅the document或WIP。
@vectorize_1arg可以让你的函数接受数组。使用此宏包裹h
可能会解决问题。
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关于为此问题添加新的语法。