我不知道x是从哪里初始化的,因为接下来要在比较中使用它。
我尝试显示x
或a
的值。
我有此代码:
a = x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))
println(a)
x之前未初始化-此代码是什么?
来自normal distribution
的x随机数是均值0吗?
答案 0 :(得分:3)
这是您所引用的代码的简化版本:
θ = zeros(1000) # or some other vector
ε = randn()
sum(x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0)), θ)
现在x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))
定义了一个匿名函数,该函数接受一个参数x
,如果-1
小于x
则返回-ε
,如果1
它大于ε
,否则返回0
。
然后Julia中sum
函数的方法之一接受两个参数,一个函数和一个集合。它的工作方式是将匿名函数x -> ifelse(ε > x, 1, ifelse(ε < -x, -1, 0))
应用于θ
的每个元素,并计算返回值的总和。
编辑
您也可以定义此代码,例如
sum(ifelse(ε > x, 1, ifelse(ε < -x, -1, 0)) for x in θ)
答案 1 :(得分:0)
Julia中的函数是一类对象:可以将它们分配给变量,并使用已分配给变量的标准函数调用语法对其进行调用。它们可以用作参数,也可以作为值返回。也可以使用以下两种语法之一匿名创建它们,而无需给出名称:
在下面考虑一个简单的功能
function MyPlus(x,y)
x + y
end
该函数的匿名版本是
a = (x,y) -> x + y
所以我们拥有的是
符号a表示包含函数的变量a。具体来说,它包含匿名功能
符号x代表DUMMY VARIABLE,它用于构造匿名函数。在匿名函数定义之外没有任何值
符号y代表DUMMY VARIABLE,它用于构造匿名函数。在匿名函数定义之外没有任何值
由于x和y都是DUMMY VARIABLES,因此它们不需要初始化,并且在匿名函数的定义之外不包含任何值。实际上,它们甚至不存在于匿名函数定义之外。
x和y没什么特别的,您可以使用任何符号,包括
mama = (baby,toy) -> baby + toy