生成一个矩阵B,其元素B i j是矩阵a的第i行和第j列的平均值



我有一个任务要做,包括:

  1. 从txt文件中读取矩阵并打印它-我设法独自完成了

  2. 生成一个矩阵B,其元素B i j是矩阵a的第i行和第j列的平均值。这是给我的问题。我知道这是怎么发生的,但我写不出来。例子:矩阵A(第一个元素B11)应该等于矩阵A第一行的平均值2 4 6(2+ 4+6)加上矩阵A第1列的平均值(2+ 8+6)。8 4 2((2+4+6) +(2+8+6))/2这应该适用于基于的每个元素它的位置(元素b23是第2行和第3列之和的平均值)这应该发生在excel VBA提前感谢!

这是我独自完成的代码:your text

下面是一个如何按要求创建新矩阵的示例。代码包括一些虚拟文本,用于从工作表(范围B4:D7)读取数组,然后将结果打印到工作表(从单元格K4开始),因此显然您希望删除这些文本并与自己的代码集成以加载矩阵。我假设你正在读取数组,就好像它是从Excel中复制的,即作为一个2D数组,每个索引从1开始。按照下面的逻辑,它应该很容易为其他数据表单修改。

Sub temp()
'Assume A is a 1-indexed 2D array, just as if a range is copied from an Excel sheet
Dim A As Variant
A = Range("B4:D7").Value

Dim numRows As Long
Dim numCols As Long

numRows = UBound(A, 1)
numCols = UBound(A, 2)

ReDim rowSum(1 To numCols) As Double
ReDim colSum(1 To numRows) As Double

'First we want to get the sum of each row and column
Dim r As Long
Dim c As Long
For r = 1 To numRows
For c = 1 To numCols
rowSum(c) = rowSum(c) + A(r, c)
colSum(r) = colSum(r) + A(r, c)
Next
Next

'Now create the average of the row sum and column sum in each element of a new array B
ReDim B(1 To numRows, 1 To numCols) As Double
For r = 1 To numRows
For c = 1 To numCols
B(r, c) = (rowSum(c) + colSum(r)) / 2
Next
Next

'Just for checking the results
Range("k4").Resize(numRows, numCols) = B
End Sub

最新更新