Subtract all individual elements of two matrix
Hello,
I still can't make this function AddMAtrix to work.
Below is all the code I'm using.
The varcovar function is working ok (you can try it, selecting data as a matrix of n rows by m columns. the result is a matrix with m rows and m columns).
But when I pass this function to the AddMatrix function I get #value error and I don't understand why.
-------------------------
Option Explicit
Function AddMAtrix(rng As Range) As Variant
Dim i As Integer
Dim j As Integer
Dim colnum As Integer
Dim rownum As Integer
Dim AddMtrx() As Variant
Dim Aux1() As Variant
Dim Aux2() As Variant
Aux1 = VarCov(rng)
Aux2 = VarCov(rng)
colnum = rng.Columns.Count
' covariance matrix
ReDim AddMtrx(colnum - 1, colnum - 1)
For i = 1 To colnum
For j = 1 To colnum
AddMtrx(i - 1, j - 1) = Aux1(i - 1, j - 1) + Aux2(i - 1, j - 1)
Next j
Next i
AddMAtrix = AddMtrx
End Function
Function VarCov(rng As Range) As Variant
Dim i As Integer
Dim j As Integer
Dim colnum As Integer
Dim matrix() As Double
colnum = rng.Columns.Count
ReDim matrix(colnum - 1, colnum - 1)
For i = 1 To colnum
For j = 1 To colnum
matrix(i - 1, j - 1) = Application.WorksheetFunction.Covar(rng.Columns(i) , rng.Columns(j))
Next j
Next i
VarCov = matrix
End Function
-------------------------------------------
thanks in advance
On Monday, October 1, 2012 3:13:04 AM UTC+1, Ben McClave wrote:
George,
I think that it would work if the function subtracting the two arrays returned an array as well. I adapted your example function to perform this task and it seems to work for me.
Ben
Function AddMAtrix(rng As Range) As Variant
Dim i As Integer
Dim j As Integer
Dim colnum As Integer
Dim rownum As Integer
Dim AddMtrx() As Variant
Dim Aux1() As Variant
Dim Aux2() As Variant
Aux1 = CovarianceMatrix(rng)
Aux2 = AverageCovarianceMatrix(rng)
colnum = rng.Columns.Count
' covariance matrix
ReDim AddMtrx(colnum - 1, colnum - 1)
For i = 1 To colnum
For j = 1 To colnum
AddMtrx(i - 1, j - 1) = Aux1(i - 1, j - 1) - Aux2(i - 1, j - 1)
Next j
Next i
AddMAtrix = AddMtrx
End Function
|