2017-09-14 5 views
1

Convex 패키지를 사용하여 ArrayConvex.MaxAtom (또는 다른 Convex 유형)으로 만들려면 어떻게해야합니까? 나는 Array이 올바른 구조입니다 있는지 확실하지 않습니다,하지만 내가 원하는 것은 내가 나는Convex.MaxAtom 배열을 초기화하십시오.

일을 시도했습니다

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 

같은 루프의 각 요소를 업데이트 할 수 있도록 길이 n의 뭔가 my_array를 초기화입니다

my_array = Convex.MaxAtom[] 
for i = 1:n 
    push!(x, max(v[i], w[i])) 
end 

하지만 메모리를 다시 할당하지 않도록하고 싶습니다. 줄리아가 이것을 구성하기 위해 어떤 유형을 사용해야하는지 이해하지 못하면서 필자는 필자가 줄리아의 중요한 부분을 놓치고 있어야한다고 생각합니다.

+0

아마도'a = Vector {Convex.MaxAtom} (n)'(그러나 이것을 테스트하지는 않았습니다.) –

+1

고마워요. 제가 이것을 받아 들일 수 있도록 대답으로 써 주시겠습니까? – jjjjjj

답변

1

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)을 정의해야 함)을 사용하는 것이 더 안전 할 수 있습니다.

관련 문제