반응형
ReDim "가입자 범위를 벗어남" 유지
2개의 Double Arrays에서 2개의 다른 Double Arrays로 데이터를 이동하려고 합니다.첫 번째 배열에서 무작위로 샘플을 추출해서 두 번째 배열에 넣는 중이라 사이즈가 어떻게 될지 잘 모르겠습니다.
RedDim Preserve 라인을 추가하면 Subscribers Out of Range 오류가 발생합니다.
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
위의 의견을 답변으로 요약합니다.
- 다중 차원 배열의 마지막 차원만 재지정할 수 있습니다.
Preserve
.
따라서 다중 차원 배열의 크기를 조정하려면 몇 가지 간단한 옵션이 있습니다.
- 한 차원만 크기를 조정해야 하는 경우 크기를 조정할 차원이 마지막 차원이 되도록 루프와 논리를 뒤집습니다.
- 두 차원 모두 크기를 조정해야 하는 경우 어레이 또는 어레이 모음을 사용하고 필요에 따라 루프를 수정합니다.
언급URL : https://stackoverflow.com/questions/23393123/redim-preserve-subscript-out-of-range
반응형
'programing' 카테고리의 다른 글
파이썬에서 no-op을 수행하는 표준 방법은 무엇입니까? (0) | 2023.06.19 |
---|---|
Eclipse 프로젝트에 C/C++ 특성 추가 (0) | 2023.06.19 |
MariaDB: 다중 테이블 업데이트가 단일 행을 여러 번 업데이트하지 않습니까?왜요? (0) | 2023.06.19 |
날짜 스탬프로 현재 Excel 워크북을 저장하고 vba 코드로 "다른 이름으로 저장"하는 방법은 무엇입니까? (0) | 2023.06.14 |
C#의 StringBuilder와 같은 Python 문자열 클래스? (0) | 2023.06.14 |