2011-10-04 5 views
1

나는 (j, 0) (i, 0)으로 매핑 된 EuroCPCrap을 가지고 있으며 이것을 (j, i)로 매핑 된 배열 EuroCPConsol에 넣기를 원합니다.4D 톱니 모양 배열의 값을 2D 표준 배열로 전송하려면 어떻게해야합니까?

For j = 0 to CPIndex 'CPIndex is a global count of variables in matrix j references 
    For i = 0 to UBound (EuroCPCrap,3) 'i in the (now known to be) jagged 
     EuroCPConsol(j+1,i+1)= EuroCPCrap(j,0,i,0) 'add one since I'm base 1 but function that produced this matrix outputted base zero 
    Next i 
Next j 

내가 UBound 함수 문에 첨자 오류가 발생, 나는 참조 된 배열에는 3 차원이 없기 때문에 그것의 실현 : 나는 시도했다.

답변

1

우선, 첫 번째 문장에서 설명하는 것처럼 왜곡 된 배열 인 경우이 EuroCPCrap(j,0,i,0)이 작동하는 이유는 무엇인지 이해할 수 없습니다. 외형은 EuroCPCrap(j,0)(i,0)이어야합니다.

부모 2 차원 자식 배열이 2 차원 배열입니다. 찾고있는 "세 번째"차원은 실제로 각 하위 배열의 첫 번째 차원입니다. 따라서이 같은 작업을해야합니다 :

For i = 0 to UBound(EuroCPCrap(j,0),1) 

사실, LBound에서 UBound에 반복하여 전체 배열에 관계없이 통과 될 수 있도록 더 나은 방법입니다 귀하의 Option Base 또는 배열은 "흐리게"방법 :

For i = LBound(EuroCPCrap(j,0),1) to UBound(EuroCPCrap(j,0),1) 

EuroCPCrap은 정말 들쭉날쭉 할 필요가 있습니까? 왜 그것을 4 차원 배열로 만들지 않겠습니까? EuroCPConsol은 들쭉날쭉하지 않습니다 ... 가장 큰 하위 배열의 내용을 받아 들일 수 있도록 치수가 정해져 있습니까? 이것들에 대해 생각할 것입니다 ...

+0

EuroCPCrap은 Nanex 출력입니다. 이상적으로 그것은 들쭉날쭉하지 않을 것입니다. 그러나 그것이 우리에게 데이터를 UDP로 보내는 방법입니다. 두 개의 차원이 비어 있기 때문에 처음부터 2 차원으로 축소하고 있습니다. 상위 배열을 통과하는 UBound 루프보다 가장 큰 하위 배열을 결정하는 더 간단한 방법이 있습니까? – Felix

+0

내가 아는 것은 아닙니다. –

관련 문제