2016-04-01 17 views
5

h(x) = ([1, x]' * [2, 3])[1]Julia'da elementel olarak fonksiyon nasıl uygulanır?

en Onu çizmek ve X ve Y almak istiyorum varsayalım bir fonksiyonu var. bunu yapmak için muhtemel bir yöntem

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

takip ediyor Ancak, Julia aynı kullanılarak elementwise operatörü yapmak da mümkündür gibi görünüyor?

Maalesef .h(X) çalışmıyor noktayla işlevini önek.

+5

mi 'haritası (h, X)' sizin burada ne arıyoruz? – niczky12

+2

Genel bir soru mu, yoksa örneğiniz için bir öğesel çözüm istiyor musunuz? Örneğinizin vectorize edilebileceğine inanıyorum .. Ama genel yaklaşımlar için "map", @ niczky12'nin önerdiği çözümdür. –

+0

Evet, genel yaklaşımı sordum. –

cevap

11

güncelleme: f.(x) sözdizimi birleşti ve Julia v0.5 DAİREMİZ, the document veya WIP bkz edildi. Julia'nın Bankası'ndaki

@vectorize_1arg Fonksiyonlarınızdan tarafından Diziler kabul edilebilir yapabilirsiniz. Bu makro ile h sarın sorunu çözebilir. İşte

Eğer here is a discussion ilgili bu sorun için yeni dilbilgisi ekleyin daha "şık" yöntemiyle arıyorsanız 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 

bir örnektir.