初始化Convex.MaxAtom数组Julia

时间:2017-09-14 15:24:46

标签: arrays julia convex

如何使用Array包创建Convex.MaxAtom ConvexConvex(或其他Array类型)?我不确定my_array是否是正确的结构,但我想要做的是初始化长度为n的{​​{1}},以便我可以更新循环中的每个元素像

using Convex
v = Variable(n)
w = Variable(n)
my_array = ...initialized array?...
for i = 1:n
    my_array[i] = max(v[i],w[i])
end

我已经尝试过了

my_array = Convex.MaxAtom[]
for i = 1:n
    push!(x, max(v[i], w[i]))
end

但我想避免重新分配内存并提前完成。我觉得我必须错过Julia的一个重要部分,因为我不了解使用什么类型来构建它。

1 个答案:

答案 0 :(得分:1)

在Julia Vector{AnyType}(n)中(用应用程序中的有效类型替换AnyType)分配长度为n的未初始化AnyType元素的向量。更一般地,Array{AnyType,3}(2,3,4)将分配大小为2x3x4的三维张量,类似地,可以分配任何维度或形状。

对于问题中的情况,解决方案是:

a = Vector{Convex.MaxAtom}(n)

P.S。元素已分配但未初始化,这很快,但使用fill(some_value, n)zero(AnyType, n)(需要zero(AnyType)定义)可能更安全。