我正在尝试用一个2x3矩阵和一个3x2矩阵相乘。但是,我没有得到预期的输出。例如,我得到的两个矩阵和输出是:input matrices and the output I get.
这是错误的输出,但我不明白如何修复它以获得正确的输出。如果你能帮忙的话,我将不胜感激。
Sub MatrixMult2()
Dim inp1(1, 2) As Integer
Dim inp2(2, 1) As Integer
Dim out(1, 1) As Integer
For j = 0 To 1
For i = 0 To 1
inp1(i, j) = Range("A28").Cells(i + 1, j + 2)
inp2(i, j) = Range("E28").Cells(i + 2, j + 1)
Next i
Next j
Dim temp As Integer
For a = 0 To 1
For b = 0 To 1
For c = 0 To 2
temp = temp + inp1(a, c) * inp2(c, b)
Next c
out(a, b) = temp
temp = 0
Next b
Next a
For j = 0 To 1
For i = 0 To 1
Range("H28").Cells(i + 1, j + 1) = out(i, j)
Next i
Next j
End Sub
3条答案
按热度按时间v64noz0r1#
黑客帝国The Matrix
由于我对矩阵的了解仅限于第一幅图中的三句话,因此请谨慎使用其中的任何一句。
Matrix Multiplication (Wikipedia)
Excel -
MMULT
表1
对于左边的示例,将以下公式复制到单元格
H2
中:现在选择单元格
H2
,并将范围扩展到I3
,选择范围H2:I3
,并激活单元格H2
(其颜色为white
,而其他单元格为gray
)。单击编辑栏并使用CTRL+ ENTER +ENTER确认。当您查看公式栏时,四个单元格中的每一个(视觉上)都具有相同的公式:其中大括号(
{
和}
)仅表示这是一个数组公式。大括号已自动添加,请勿尝试手动添加。对于右边的示例,将以下公式复制到单元格
R7
中:现在选择单元格
R7
并将范围扩展到V10
,使范围R7:V10
被选中,单元格R7
处于活动状态(其颜色为white
,而其他单元格为gray
)。单击编辑栏并使用CTRL+ ENTER +ENTER确认。当您查看公式栏时,二十个单元格中的每一个(视觉上)都具有相同的公式:其中大括号(
{
和}
)仅表示这是一个数组公式。大括号已自动添加,请勿尝试手动添加。表2
根据你的代码,你可以在单元格
H28
中使用以下公式:现在选择单元格
H28
并将范围扩展到I29
,使范围H28:I29
被选中,单元格H28
处于活动状态(其颜色为white
,而其他单元格为gray
)。单击编辑栏并使用CTRL+ ENTER +ENTER确认。当您查看公式栏时,四个单元格中的每一个(视觉上)都具有相同的公式:其中大括号(
{
和}
)仅表示这是一个数组公式。大括号已自动添加,请勿尝试手动添加。安装
调整你认为合适的常量。
gopyfrb32#
okxuctiv3#
在矩阵乘法中,2x3矩阵乘以3x2矩阵将返回2x2矩阵。
通常,对于两个矩阵(A x B),矩阵乘以(B x C)返回(A x C),其中矩阵1中的列数(值B)必须等于矩阵2中的行数。