0

我需要帮助创建一个对应于这个方程的矩阵: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函数中,这样:c在“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))

有谁能帮忙吗?

4

0 回答 0