2011-10-04 36 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

不是我所知道的。 –