首页 置换 选车 估价 问答 生活 经销商 车管所 汽车资讯 汽车销量 车牌查询 今日油价 天气预报
您的位置: 首页 > 生活 > 生活 > 矩阵计算可以换行吗(矩阵乘积没问题)
矩阵计算可以换行吗(矩阵乘积没问题)
更新时间:2024-07-05 16:06:08

小伙伴们好啊,今天咱们来分享一个比较冷门的函数——MMULT。

这个函数的作用是返回两个数组的矩阵乘积。

啥是数组?咱们可以理解为一组数。

哪啥是矩阵呢,就是有数据的矩形单元格区域,例如下面这两个长方形或是正方形的区域:

矩阵计算可以换行吗(矩阵乘积没问题)1

这个函数的参数很简单:

MMULT(数组1,数组2)

两个数组在计算时,要求数组1的行数与数组2的列数相同,或者数组1的列数与数组2的行数相同。

比如下图中,左侧部分的两个数组因为列数与行数符合要求,就可以当成MMULT函数的两个参数进行计算,而右侧的两个数组则因为列数与行数不符合要求,就不能使用MMULT函数进行运算了。

矩阵计算可以换行吗(矩阵乘积没问题)2

函数结果会得到一个新的矩阵,这个矩阵的行数与 数组1 的行数相同,列数与 数组2 的列数相同。

矩阵计算可以换行吗(矩阵乘积没问题)3

上图中蓝色区域的公式结果看起来有点乱,其实就是用垂直方向的这个数组中的每个元素与水平方向数组中的每个元素对应相乘。

光看这些解释,很多小伙伴肯定会觉得这样太抽象了,下面咱们就来点具体的,用几个简单实例,来说说MMULT函数的基本用法。

1、计算综合成绩

如下图所示,每个同学有笔试和面试两项成绩,其中笔试成绩占比为60%,面试成绩占比为40%,现在需要计算综合成绩:

D2单元格输入以下公式,下拉。

=MMULT(B2:C2,G$2:G$3)

矩阵计算可以换行吗(矩阵乘积没问题)4

公式的意思是使用水平方向的数组B2:C2,与垂直方向的数组G$2:G$3执行乘法计算,计算过程是:

=88(笔试成绩)*60%(笔试占比) 90(面试成绩)*40%(面试占比)

公式中的数组1(B2:C2)是一行,而数组2(G$2:G$3)是一列,所以最终得到一个数组结果,这个数组的大小只有一行一列。

2、计算商品金额

如下图所示,第一行和第二行分别是商品单价和商品名称,在底部区域则是不同客户购买各个商品的数量。

需要在K列计算每个客户的应付金额。

矩阵计算可以换行吗(矩阵乘积没问题)5

如果在K2使用MMULT函数直接将数组1参数设置为表示数量的B3:J3,将数组2参数设置为表示单价的B1:J1,公式会返回错误值。

这是因为两个数组都是9列1行,数组1的行数(1)与数组2的列数(9)不同,并且数组1的列数(9)与数组2的行数(1)也不同。

怎么办呢?咱们可以在公式中嵌套TRANSPOSE函数,将其中一个数组的行列方向进行转置互换。

=MMULT(B3:J3,TRANSPOSE(B$1:J$1))

矩阵计算可以换行吗(矩阵乘积没问题)6

K2输入上述公式后,结果仍然是错误值,为什么呢?

这是因为数组1(B3:J3)中包含空白单元格了。

咱们将公式继续修改一下,在有空白单元格的数组1后面乘以1,这样一来,空白单元格变成了0,再计算就没有问题了:

=MMULT(B3:J3*1,TRANSPOSE(B$1:J$1))

矩阵计算可以换行吗(矩阵乘积没问题)7

熟悉函数公式的小伙伴可能早看出来了,上面的两个例子其实都可以使用SUMPRODUCT函数来完成,咱们就是为了让大家熟悉一下这个函数的基础用法。

下面再来说一个使用其他函数不太容易实现的问题。

3、餐费分摊

如下图所示,是某单位国庆值班人员的用餐记录。

F列是不同日期的餐费金额,B2:E7单元格区域是员工的进餐情况,1表示当日进餐次数为1,2表示当日进餐次数为2,空白表示当日没有进餐。

矩阵计算可以换行吗(矩阵乘积没问题)8

需要在B8:E8单元格区域中,根据每日的进餐人数和餐费,计算每个人应分摊的餐费金额。

计算方法为当日餐费除以当日进餐总次数,如1日餐费为54元,进餐次数为2 1 3,则张三分摊金额为54/(2 1 3)*2 即18元。

在计算张三总的分摊金额时,需要先计算出每一天的用餐总次数,然后用每一天的餐费除以每一天的用餐总次数,最后再乘以张三在每天的用餐次数,得到张三每天的分摊餐费,最后相加即可。

B8单元格输入以下数组公式,按<Ctrl Shift Enter>组合键结束编辑,然后向右复制到E8单元格。

=SUM($F2:$F7/MMULT($B2:$E7*1,1^ROW(1:4))*B2:B7)

由于$B2:$E7单元格区域中存在空白单元格,直接使用MMULT函数时将返回错误值,因此先乘以1将区域中的空白单元格转换为0。

1^ROW(1:4)部分,返回4行1列的内存数组{1;1;1;1},结果用作MMULT函数的数组2参数。(因为数据范围有四列,所以使用ROW(1:4),实际应用时可将4修改成实际的数据列数)

MMULT($B2:$E7*1,1^ROW(1:4))部分,依次计算每一行的矩阵相乘之和,返回内存数组结果为:

{6;7;6;3;4;7}

结果就是$B2:$E7单元格区域中每一行的总和,即每日进餐的总次数。

然后使用$F2:$F7单元格区域的每日餐费,除以MMULT函数得到的每日进餐总次数,得到在不同日期内的每次进餐应分摊金额。

再乘以B2:B7单元格区域中每天的个人进餐次数,得到张三每天的应分摊金额为:

{18;6;27.5;0;48;42.85}

最后使用SUM函数求和,得到应分摊餐费总额。

好了,今天咱们分享的内容就是这些吧,祝大家一天好心情!

图文制作:祝洪忠

,
相关推荐RECOMMEND
襁褓是什么意思(科普襁褓的意思)
襁褓是什么意思?襁褓是一个汉语词语,读音为qiǎngbǎo亦写作“襁緥”、“襁保”、“襁葆”、“繦緥”意思为包裹婴儿的被子和带子;指婴幼儿(古代泛指1岁以下幼童,现在以此借指未满周岁的婴儿);把婴儿包...
不同颜色紫罗兰花语(紫罗兰的花语是什么)
紫罗兰作为生活中比较常见的花卉植物,开花后不仅漂亮,还具有很高的观赏价值,适合用来当做礼物送给别人,可能很多人都不知道送紫罗兰代表什么意思,其实送给女性的话是为了表达纯真的爱念,那么紫罗兰的花语是什么...
回乡偶书单字意思(回乡偶书该读衰shuai还是衰cui)
齐鲁大地,每年的十一都是在外的游子回家的期盼,此时此情让我想起了回乡偶书少小离家老大回,乡音无改鬓毛衰。儿童相见不相识,笑问客从何处来。鬓毛衰中的衰我以前是读shuai的,经过了解,很多人还读cui,...
山楂什么时间打顶(山楂打顶的时间)
山楂什么时间打顶?山楂打顶通常都是选在夏季进行的,夏季是生长旺季,发现徒长情况及时打顶摘心,这样能很好的控制枝条的长度,也可促使养分更集中,从而侧枝会更好的萌发,株形会变得更加丰满美观,我来为大家科普...
手镯断了有什么预兆(玉手镯断了好不好)
手镯断了有什么预兆?玉镯断裂或者有裂痕了,证明帮你已经了灾现在是没有作用了,你要最多去化解煞气把玉镯用红布包起来,放鱼缸的底下就会降解煞气了,接下来我们就来聊聊关于手镯断了有什么预兆?以下内容大家不妨...
老子名言名句(老子名言名句有哪些)
老子名言名句?道可道,非常道名可名,非常名无名天地之始;有名万物之母,我来为大家科普一下关于老子名言名句?以下内容希望对你有帮助!老子名言名句道可道,非常道。名可名,非常名。无名天地之始;有名万物之母...