2011-10-04 62 views
1

我把EuroCPCrap映射爲(j,0)(i,0),並且想把它放入映射爲(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函數聲明標錯誤,我意識到這是因爲引用的數組中沒有第三個維度。

回答

1

首先,我不明白爲什麼這個EuroCPCrap(j,0,i,0)可以工作,如果它是你在第一句話中描述的鋸齒陣列。在外觀上,它應該是EuroCPCrap(j,0)(i,0)。你有一個父二維數組的子二維數組。您要查找的「第三個」維度實際上是每個子數組的第一個維度。所以,這樣的事情應該工作:

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

事實上,迭代從LBoundUBound是更好的做法,以確保整個陣列無論經過了你的Option Base或如何陣列「變暗」:

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

EuroCPCrap是否真的需要鋸齒?爲什麼不把它做成一個4維數組? EuroCPConsol不是參差不齊...是否正確標註接受最大的兒童數組的內容?這些是需要考慮的事情...

+0

EuroCPCrap是一個Nanex輸出;理想情況下,它不會參差不齊,但這就是他們將數據傳輸給我們的方式。由於其中兩個維度都是空的,我只是將它摺疊到了本應該放在第一位的兩個維度。 是否有一種比UBound循環父數組更簡單的方法來確定最大的子數組? – Felix

+0

不是我所知道的。 –