Создать matrix3 из: константы * matrix1 + (1-константа) * matrix 2 - PullRequest
0 голосов
/ 29 марта 2019

Мне нужна помощь в создании матрицы, которая соответствует этому уравнению: c * matrix1 + (1-c) * matrix2

Где matrix1 определяется как:

Function VarCovarZeros(InputMatix As Range) As Variant
    Dim MatrixColumns  As Long
    MatrixColumns = InputMatix.Columns.Count

    Dim MatrixRows  As Long
    MatrixRows = InputMatix.Rows.Count

    Dim Matrix() As Double
    ReDim Matrix(1 To MatrixColumns, 1 To MatrixColumns)

    Dim i As Long
    For i = 1 To MatrixColumns
        Matrix(i, i) = Application.WorksheetFunction.Covar(InputMatix.Columns(i), InputMatix.Columns(i)) * MatrixRows / (MatrixRows - 1)
    Next i

    VarCovarZeros = Matrix

End Function

А матрица 2 задается как:

Function VarCovar(rng As Range) As Variant
    Dim i As Integer
    Dim j As Integer
    Dim numcols As Integer

    numcols = rng.Columns.Count
    numrows = rng.Rows.Count

    Dim Matrix() As Double
    ReDim Matrix(numcols - 1, numcols - 1)

    For i = 1 To numcols
        For j = 1 To numcols
            Matrix(i - 1, j - 1) = Application.WorksheetFunction.Covar(rng.Columns(i), rng.Columns(j)) * numrows / (numrows - 1)
        Next j
    Next i
    VarCovar = Matrix

End Function

Матрицы основаны на одних и тех же необработанных данных, но их необходимо динамически обновлять каждый период, поэтому они нужны не только для двух статических матриц.

Я хочу поместить его в функцию Excel, чтобы: с находится в "M1"

minverse(M1*VarCovarZeros(A3:F27)+(1-c)*(VarCovar(A3:F27))

Но похоже, что он не читает часть "M1 * VarCovarZeros (A3: F27) + (1-c) * (VarCovar (A3: F27))" как одну матрицу, поскольку она не дает результатов, это должен.

Вот почему мне нужна помощь в создании матрицы с VBA, поэтому можно будет сказать:

minverse(matrix3(A3:F27))

Кто-нибудь может помочь?

...