1

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

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

4

1 回答 1

1

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

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

a = Vector{Convex.MaxAtom}(n)

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

于 2017-09-14T21:50:39.770 回答