【问题标题】:initialize Convex.MaxAtom array Julia初始化 Convex.MaxAtom 数组 Julia
【发布时间】:2018-02-23 16:02:08
【问题描述】:

如何使用Convex 包创建Convex.MaxAtoms(或就此而言,其他Convex 类型)的Array?我不确定Array 是否是正确的结构,但我想要做的是初始化长度为nmy_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 的一个重要部分,即不了解使用什么类型来构造它。

【问题讨论】:

  • 可能是a = Vector{Convex.MaxAtom}(n)(但还没有测试过)
  • 谢谢,成功了!你想把这个写下来作为答案让我接受吗?

标签: arrays julia convex


【解决方案1】:

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

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

a = Vector{Convex.MaxAtom}(n)

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

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多