函数在涉及if、else和矩阵的Julia中实现的困难
我试图在Julia中实现这个函数,但我不明白。我认为这是因为广播,它似乎不适用于阵列。 当我用类似点的“>而不是>”来编写关系运算符时,错误的数量减少了,但它指责TypeError:在布尔上下文中使用的非布尔位向量。 我怎样才能解决这个问题函数在涉及if、else和矩阵的Julia中实现的困难,julia,juno-ide,Julia,Juno Ide,我试图在Julia中实现这个函数,但我不明白。我认为这是因为广播,它似乎不适用于阵列。 当我用类似点的“>而不是>”来编写关系运算符时,错误的数量减少了,但它指责TypeError:在布尔上下文中使用的非布尔位向量。 我怎样才能解决这个问题 function Rulkov(N, X, Y, α) global σ, μ for n=1:1:N if (X[n, 1]<=0) X[n, 2] = α[n] / (1 - X[n, 1]) + Y[n
function Rulkov(N, X, Y, α)
global σ, μ
for n=1:1:N
if (X[n, 1]<=0)
X[n, 2] = α[n] / (1 - X[n, 1]) + Y[n, 1]
elseif (X[n, 1]>0 && X[n, 1]<(α .+ Y[n, 1]))
X[n, 2] = α[n] + Y[n, 1]
else
X[n, 2] = -1
end
Y[n, 2] = Y[n, 1] - μ*(X[n, 1] .+ 1) .+ μ*σ
end
return sum(X[:, 2])/N
end
if、else只接受布尔值。所以我想你需要先调用位向量的all或any?假设X和Y是矩阵,X[n,1]是标量,α+Y[n,1]是向量,所以这些对象之间没有意义的比较。因此,根据您的需要,您可以使用
all(X[n, 1] .< (α .+ Y[n, 1])))
或者从数学的角度来看可能更正确
X[n, 1] < minimum(α .+ Y[n, 1])
或先前计算的非分配版本
X[n, 1] < minimum(x -> x + Y[n, 1], α)
或如评论中所建议的那样
X[n, 1] < minimum(α) + Y[n, 1]
或者最小α+Y[n,1]?哈,你是对的,在我这边过度工程:-哇!我不知道这些功能!使用all函数的建议我理解,但我仍然不理解最小函数的作用。不管怎样,我用了所有的,效果非常好!我很满意!非常感谢你!最小值函数查找集合中的最小值。这个名字很贴切,真的。