大家好,今天我们来讲讲MMULT函数,既绕脑又好玩。
MMULT是WPS表格中的矩阵乘法函数,用于计算两个矩阵的乘积。
语法看似很简单,就两个参数:
=MMULT(array1, array2)
array1为第一个矩阵(数组),array2为第二个矩阵(数组)
这个函数有一定的规则:
①对数据源,即两个矩阵的要求:
第一个矩阵(array1)的列数必须等于第二个矩阵(array2)的行数。
②对返回结果的要求:
MMULT函数返回结果矩阵的行数是由array1的行数决定的,列数是由array2的列数决定的。
我们用最简单的数据举一个例子:
假设A2:A4是3行1列的矩阵,B1:D1是1行3列的矩阵。
我们输入公式:
=MMULT(A2:A4, B1:D1)
第一个矩阵的列数(1列)与第二个矩阵的行数(1行)相等,结果是一个3行3列的矩阵。计算时,第一个矩阵的每一行元素分别与第二个矩阵的每一列元素相乘并求和。
结果矩阵维度:3行×3列。计算过程:
第一行:1x4,1x5,1x6→4,5,6
第二行:2x4,2x5,2x6→8,10,12
第三行:3x4,3x5,3x6→12,15,18
最终结果:
4 5 6
8 10 12
12 15 18
如果我们将第一参数与第二参数互换位置:
=MMULT(B1:D1,A2:A4)
第一个矩阵的列数(3列)与第二个矩阵的行数(3行)相等,结果是一个 1行1列的矩阵(即单个数值)。此时,计算逻辑是第一个矩阵的每一行(仅1行)与第二个矩阵的每一列(仅1列)相乘并求和,即两个矩阵的点积。
结果矩阵维度:1行 × 1列。计算过程:
1*4+2*5+3*6=4+10+18=32
最终结果:32
小结:
以上两种情况虽然只是将两个矩阵交换了位置,但其数学本质决定了:矩阵乘法不满足交换律。矩阵乘法本质上是线性变换的叠加,运算顺序不同会导致不同的变换组合,因此结果必然不同。
接着下,我们继续进入正题。用MMULT函数玩矩阵,轻松搞定九九乘法表案例。
首先我们输入公式:
=MMULT(A2:A10,B1:J1)
运用MMULT函数矩阵运算得到每1行和每1列相乘的矩阵结果。
加入IF函数:
=IF(A2:A10>=B1:J1,MMULT(A2:A10,B1:J1),"")
如果A2:A10区域单元格值大于或等于B1:J1区域单元格值的时候,我们就返回MMULT函数对应的返回结果;否则,返回空值即可。
这样的做的目的就是为了右上方区域的留白处理。拒绝重复的运算的出现。
此时只是做到了九九乘法表的乘积结果,而“x*y=”部分还是缺失的。
所以我们这样完善公式:
=IF(A2:A10>=B1:J1,A2:A10&"x"&B1:J1&"="&MMULT(A2:A10,B1:J1),"")
同时用对应的A2:A10区域的行值连接“&”对应的B1:J1区域的列值再连接“&”等于号“=”,最后再次用连接符“&”与MMULT函数的返回结果相连接即可。