ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[讨论]识别MMULT另类用法,苦于无具体实例。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-5-31 19:54 | 显示全部楼层

记得线性代数里满足array1的列数array2的行数相同的才能进行矩阵相乘的运算吧?如果不等就不符合mmult的参数条件。

是不是对调后不符合参数条件,然后通过扩充矩阵让他符合参数条件,而且对要求得到的结果没有影响?

TA的精华主题

TA的得分主题

发表于 2008-5-31 20:00 | 显示全部楼层

矩阵的乘法就是第一个矩阵的第一行与第二个矩阵的第一列相乘并求和作为新矩阵的第一行第一个元素第一行于第二列相乘并求和得到第一行第二个元素,诸如此类。这样才叫做矩阵的乘法,计算机也是按照这个方法运行的,返回的矩阵式与第一个矩阵行数相同,列数与第二个矩阵列数相等。不管你选择生成矩阵的范围有多大,它最多只能生成这样的一个结果矩阵,否则结果就会返回错误。比如MMULT(C1:F2,A3:A5),函数就不能正确计算了,因为不符合参数条件,返回错误值。除非你通过别的方式使对调后的行列满足这个条件。

还是没有太懂楼主的意思,是要让两个不符合mmult参数条件的矩阵来进行运算么?

[此贴子已经被作者于2008-5-31 20:03:23编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-31 20:09 | 显示全部楼层
QUOTE:
以下是引用shaowu459在2008-5-31 20:00:03的发言:

矩阵的乘法就是第一个矩阵的第一行与第二个矩阵的第一列相乘并求和作为新矩阵的第一行第一个元素第一行于第二列相乘并求和得到第一行第二个元素,诸如此类。这样才叫做矩阵的乘法,计算机也是按照这个方法运行的,返回的矩阵式与第一个矩阵行数相同,列数与第二个矩阵列数相等。不管你选择生成矩阵的范围有多大,它最多只能生成这样的一个结果矩阵,否则结果就会返回错误。比如MMULT(C1:F2,A3:A5),函数就不能正确计算了,因为不符合参数条件,返回错误值。除非你通过别的方式使对调后的行列满足这个条件。

还是没有太懂楼主的意思,是要让两个不符合mmult参数条件的矩阵来进行运算么?


MMULT的计算方式对我来说很难用语言来阐述说明,只能靠实例意会感受,你的语言表述能力很强,一句话把另列用法的规律总结出来了。

没错,最终结果也是一个矩阵,但如何利用此矩阵的规律来解题是我开贴的初衷。

两种用法均不能违背MMULT的参数用法,这是函数的要求。

只不过是把第一矩阵和第二矩阵的前后位置倒置来产生不同的计算结果。

[此贴子已经被作者于2008-5-31 20:37:57编辑过]

TA的精华主题

TA的得分主题

发表于 2008-5-31 20:17 | 显示全部楼层
QUOTE:
以下是引用samsoncsr在2008-5-31 20:09:09的发言:

MMULT的计算方式对我来说很难用语言来阐述说明,你能靠实例意会感受,你的语言表述能力很强,一句话把另列用法的规律总结出来了。

没错,最终结果也是一个矩阵,但如何利用此矩阵的规律来解题是我开贴的初衷。

两种用法均不能违背MMULT的参数用法,这是函数的要求。

只不过是把第一矩阵和第二矩阵的前后位置倒置来产生不同的计算结果。


呵呵,其实常规用法也是那个规律啊,矩阵相乘的计算本来就是shaowu459说的那样的啊,所以,array1和array2可以交换只是个巧合,并不是所有的都满足这种情况的,呵呵

TA的精华主题

TA的得分主题

发表于 2008-5-31 20:22 | 显示全部楼层

我觉得是这样,根据具体情况决定矩阵参数的顺序,或者构造出一个矩阵来,比如说我们想求和只在一个单元格中返回满足多个条件的数值的和时候,如果能够很方便的生成一个1行n列的矩阵A,我们后面就可以把求和区域用函数构造出一个n行一列的矩阵B,那么我们用mmult(A,B)可以返回想要的结果。反之,应该调换参数位置了。具体说应用,应该看实际数据的摆放方式,比如可能是A1,B1是列标,下面是数据,但是也可能A1A2是行标,右边是数据,这样判断符合条件的时候就应该注意参数的位置了

TA的精华主题

TA的得分主题

发表于 2008-5-31 20:22 | 显示全部楼层

发重了……

[em04]
[此贴子已经被作者于2008-5-31 20:22:54编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-5-31 20:31 | 显示全部楼层
QUOTE:
以下是引用nocrying在2008-5-31 20:17:32的发言:

呵呵,其实常规用法也是那个规律啊,矩阵相乘的计算本来就是shaowu459说的那样的啊,所以,array1和array2可以交换只是个巧合,并不是所有的都满足这种情况的,呵呵

这下轮到我急了。两种用法的规律怎么会相同呢,见附图结果:

结果1和结果2完全是不同的。

 


[讨论]识别MMULT另类用法,苦于无具体实例。

[讨论]识别MMULT另类用法,苦于无具体实例。

TA的精华主题

TA的得分主题

发表于 2008-5-31 20:33 | 显示全部楼层
其实怎么说呢,你第二种结果应该只选择那四个连续的单元格作为结果输出区域,否则计算结果也不对啊.

TA的精华主题

TA的得分主题

发表于 2008-5-31 20:36 | 显示全部楼层
QUOTE:
以下是引用samsoncsr在2008-5-31 20:31:17的发言:

这下轮到我急了。两种用法的规律怎么会相同呢,见附图结果:

结果1和结果2完全是不同的。


呵呵,矩阵运算规律(即运算法则)是一样,结果当然是不同,因为矩阵运算,A*B<>B*A,如果相等只会是特殊情况。不像普通的四则运算A*B=B*A

TA的精华主题

TA的得分主题

发表于 2008-5-31 20:37 | 显示全部楼层

我算是看懂了,samsoncsr兄我们一般用MMULT解题都是让一个数组变为一维数组,构造列相加或行相加的,你举的例子MMULT都是多维的了,如果说它有什么应用嘛,暂时的就是用来求矩阵的乘积了。

另附上线性代数说的矩阵乘积的定义:

只有当左边的矩阵A等于右边矩阵B 的行数时,乘积AB才有意义,这是AB的行数等于矩阵A的行数,AB的列数等于矩阵B的列数,且AB的第I行第I列的元素是A的第I行与B的第J列的对应元素乘积之和.这里A,B对应array1,array2.

另外mmult(array1,array2)=mmult(transpose(array2),transpose(array1)).

[此贴子已经被作者于2008-5-31 20:47:58编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 09:03 , Processed in 0.041944 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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