如何使用Array
包创建Convex.MaxAtom
Convex
个Convex
(或其他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的一个重要部分,因为我不了解使用什么类型来构建它。
答案 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)
定义)可能更安全。