ReDim保留“下标超出范围”

我正试图将数据从2个双数组移动到2个不同的双数组。 我不确定尺寸是什么,因为我正在从第一个数组中取出一个随机样本,并把它放到第二个数组中。

当我添加ReDim保留线时,我得到下标超出范围错误。

Function CreateTrainingSet(TrainingPercent As Double, Inputs() As Double, Outputs() As Double) ' Create Randomized Training set data Dim TrainingInputs() As Double, TrainingOutputs() As Double Dim i As Integer, j As Integer, count As Integer 'ReDim TrainingInputs(UBound(Inputs, 1), UBound(Inputs, 2)) 'ReDim TrainingOutputs(UBound(Outputs, 1), UBound(Outputs, 2)) count = 0 ' Move TraningPercent % of data from Inputs and Outputs to TrainingInputs and TrainingOutputs For i = LBound(Inputs, 1) To UBound(Inputs, 1) Dim ran As Double ran = Rnd() If ran <= TrainingPercent Then count = count + 1 For j = LBound(Inputs, 2) To UBound(Inputs, 2) ReDim Preserve TrainingInputs(1 To count, 1 To UBound(Inputs, 2)) TrainingInputs(count, j) = Inputs(i, j) Next j For j = LBound(Outputs, 2) To UBound(Outputs, 2) ReDim Preserve TrainingOutputs(1 To count, 1 To UBound(Outputs, 2)) TrainingOutputs(count, j) = Outputs(i, j) Next j End If Next i For i = LBound(TrainingInputs, 1) To UBound(TrainingInputs, 1) For j = LBound(TrainingInputs, 2) To UBound(TrainingInputs, 2) Cells(i, j + 10).Value = TrainingInputs(i, j) Next j Next i End Function 

总结上面的评论到一个答案:

  • 您只能重新标注multidimensional array的最后一个维度

因此,为了调整multidimensional array的大小,有几个简单的选项:

  1. 如果只有一个维度需要resize,则会翻转周围的逻辑和逻辑,以使要resize的维度成为最后一个维度
  2. 如果两个维都必须resize,请使用数组数组或数组集合,并根据需要更正循环