ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 23571|回复: 8

[原创]MMULT的矩阵乘法原理

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-3-9 10:33 | 显示全部楼层 |阅读模式
本帖已被收录到知识树中,索引项:MMULT

mmult
这个函数是矩阵乘积函数
可能大家不知道此函数的具体的相乘原理
现在简要描述如下

一:
“左列右行”
何谓“左列右行”,意思是相乘的矩阵,左边的矩阵的列数必须等于右边矩阵的列数;即MMULT的第一个参数的列数必须等于第二个参数的行数,否则不能得到正确结果。
二:
“左行右列”
所谓“左行右列”意思是我们在做矩阵乘法时,是拿左边矩阵的每一行元素去乘以右边矩阵的每一列元素。
打个比方 一个一行三列的矩阵去乘一个三行一列的矩阵将得到一个一行一列的矩阵,即一个单值。


前面我们提到“左列右行”,为什么这里又有一个“左列右行”呢!也许这里会把大家搞糊涂。其实很简单,这两句话分别代表了矩阵乘法的两个步骤。第一个步骤是前提,旨在判断我们手里的两个矩阵能不能做乘法。第二个步骤是过程,是让我们知道矩阵是如何相乘的。

如果您对上面的已经了解,请忽略此帖。

如果您不明白上面在讲什么,请移步到下面两贴,然后再回过头来看这两点,相信您会有更大的体会的。

山版:初识MMULT http://club.excelhome.net/viewthread.php?tid=168580&replyID=&skin=0

czzqb: 从头细说MMULT http://club.excelhome.net/viewthread.php?tid=270255&replyID=&skin=0

[此贴子已经被作者于2008-3-9 10:35:31编辑过]

TA的精华主题

TA的得分主题

发表于 2008-3-9 11:08 | 显示全部楼层

其实我对矩阵的原理不是太懂,每次都是凑出来的:

我就记得一句话,一行两列,MMULT所得的值是第一个参数的行,第二个参数的列,前面的列要等于后面的行

TA的精华主题

TA的得分主题

发表于 2008-3-9 11:14 | 显示全部楼层

M行N列 X N行M列=M行M列 红色部分要相等

这是我所知道的!呵呵

TA的精华主题

TA的得分主题

发表于 2008-3-9 11:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

我使用mmlunt(),是用来解多元方程,至于行和列,只要符合多元方程要求则行了。就仅至而已。

TA的精华主题

TA的得分主题

发表于 2008-12-7 17:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
我也说二句,假如左边字母代表行,右边代表列,那么mmult(AC,CB)=AB

TA的精华主题

TA的得分主题

发表于 2009-3-3 11:39 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
原帖由 aadswell 于 2008-12-7 17:32 发表
我也说二句,假如左边字母代表行,右边代表列,那么mmult(AC,CB)=AB


正在学习使用这个函数:
对楼上这个结果不太理解,看过线代书,如果矩阵相乘是1行1列得到一个数值,对M行N列则是一个矩阵,矩阵=数组?
对于结果,MMULT不用三键结束的话就是第1行第1列的数,用三键结束则是一个数组.而MMULT作为其它函数参数时则是一个数组参加运算,不需用三键结束.
只理解这么多,请达人指教!共勉!!!

TA的精华主题

TA的得分主题

发表于 2010-1-4 16:50 | 显示全部楼层
原帖由 lbzcc 于 2008-3-9 10:33 发表
mmult这个函数是矩阵乘积函数可能大家不知道此函数的具体的相乘原理现在简要描述如下一:“左列右行”何谓“左列右行”,意思是相乘的矩阵,左边的矩阵的列数必须等于右边矩阵的列数;即MMULT的第一个参数的列数必须 ...



说的很经典!
不过第一个左列右行中有一个字错了,很重要的字(见下面的红色标记处)。我整理了一下(加了我从其他地方看来的说法),如下:

MMULT函数(返回2数组的矩阵积)
矩阵乘积函数

MMULT(ARRAY1,ARRAY2)
第一、第二参数都只能是数值;;
第一参数的列数=第二参数的行数;
结果的行数=第一参数的行数;
结果的列数=第二参数的列数。

左列右行:
何谓“左列右行”,意思是相乘的矩阵,左边的矩阵的列数必须等于右边矩阵的数;即MMULT的第一个参数的列数必须等于第二个参数的行数,否则不能得到正确结果。
左列右行,是判断我们手里的两个矩阵能不能做乘法。

左行右列:
所谓“左行右列”意思是我们在做矩阵乘法时,是拿左边矩阵的每一行元素去乘以右边矩阵的每一列元素。
左行右列,是让我们知道矩阵是如何相乘的。

TA的精华主题

TA的得分主题

发表于 2013-8-13 15:24 | 显示全部楼层
MMULT函数 正在学习,留个脚印,嘿嘿。

TA的精华主题

TA的得分主题

发表于 2013-11-9 15:37 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
是一个参数的行数必须等于第二参数的列数吧?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-6 05:07 , Processed in 0.038424 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表