2017-09-14 43 views
1

如何使用Convex包創建ArrayConvex.MaxAtom s(或者對於這個問題,其他Convex類型)?我不知道如果Array是正確的架構,但我想要做的是初始化長度n的東西my_array,這樣我可以在一個循環更新每個元素像初始化Convex.MaxAtom數組Julia

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

也許'a = Vector {Convex.MaxAtom}(n)'(但是還沒有測試過) –

+1

謝謝,工作!你想寫這個作爲答案,所以我可以接受它嗎? – jjjjjj

回答

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))可能會更安全。