初始化 Convex.MaxAtom 数组 Julia

initialize Convex.MaxAtom array Julia

如何使用 Convex 包创建 ArrayConvex.MaxAtom 类型(或者就此而言,其他 Convex 类型)?我不确定 Array 是否是正确的结构,但我想做的是初始化长度 n 的东西 my_array 以便我可以更新循环中的每个元素,例如

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 的一个重要部分,因为我不了解使用什么类型来构造它。

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

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

a = Vector{Convex.MaxAtom}(n)

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