关于矩阵乘法按照列乘行的方式来看

本文解析了矩阵乘法的两种理解方式:一是通过行与列的内积运算;二是通过列与行相乘再求和的方式,揭示了矩阵乘法与加法之间的内在联系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前我们教的所有的矩阵乘法的运算都是这么算的:

C=AB;

Cij = <Ai,Bj>,表示的A矩阵的i行与B矩阵的j列进行内积运算。

这两天因为学姐让看稀疏表示的一些东西,所以涉及到了矩阵运算,中间有一段描述是这样的:

Cmxn = Amxk * Bkxn  可以看成是A的i列与B的i行先做乘法,得到一个矩阵,如A1(mx1)*B1(1*n)得到的是一个mxn的矩阵,然后对A的k列都做这样的操作,可以得到k个矩阵,然后再将k个矩阵求和,就得到C这个mxn的矩阵。



也就是矩阵的乘法还是可以看做多个矩阵的加法的,这就跟普通的乘法差不多了,都是多个加法的累加。






之前一直不知道为什么这样的操作要叫矩阵的乘法,这样看来叫做矩阵乘法还是有依据的,因为可以看成多个矩阵累加(虽然这些矩阵并不完全相同,但是都是mxn的矩阵)。

<think>嗯,用户问的是MATLAB中矩阵乘法的计算顺序是左往右还是右往左。首先,我得确认他到底在问什么。矩阵乘法的计算顺序可能有两种理解:一种是运算符的结合顺序,也就是当有多个矩阵连续相时,MATLAB是按照从左到右还是从右到左的顺序进计算;另一种可能是指矩阵乘法本身的数学规则,比如矩阵时的操作。 先考虑第一种情况,运算符的结合顺序。在大多数编程语言中,包括MATLAB,矩阵乘法的运算符是左结合的,也就是说,当有多个乘法连续出现时,计算顺序是从左到右。例如,A*B*C会被解释为(A*B)*C,而不是A*(B*C)。不过,数学上矩阵乘法虽然满足结合律,但不同的计算顺序可能会影响计算效率,尤其是在涉及多个大矩阵时。不过用户的问题可能更基础,只是想知道执顺序的方向,而不是性能方面。 再来看第二种情况,矩阵的数学规则。MATLAB中的矩阵乘法是严格按照线性代数中的定义进的,即方式。每个元素的计算是按照左边矩阵和右边矩阵对应元素相再求和。这一点用户可能已经了解,但如果有疑问的话需要说明清楚。 然后,我需要检查用户提供的引用内容。引用[1]提到了MATLAB中的矩阵乘法用*表示叉,而.*表示点。这说明用户可能对两种乘法有混淆,但问题明确问的是矩阵乘法,也就是叉。引用[2]中讨论了矩阵后的维度,例如2x2矩阵以2x3矩阵得到2x3矩阵,这涉及到矩阵乘法的基本规则,即前者的数等于后者的数。这可能和用户的问题相关,因为他可能关心计算顺序是否正确会影响矩阵维度是否匹配。 接下来,用户的疑问可能源于他遇到了多个矩阵连续相的情况,不确定MATLAB是如何处理顺序的。例如,表达式A*B*C,MATLAB会先计算A*B,再将结果与C相。如果矩阵的维度不符合,就会报错。这时候需要确保每一步的矩阵乘法都是可的,即相邻矩阵的维度匹配。 另外,用户可能看到过某些数学表达式中的矩阵乘法是从右往左进的,例如在变换矩阵中,但MATLAB作为编程语言,其运算符的结合性决定了执顺序。需要明确说明MATLAB的处理方式。 最后,总结答案时需要强调两点:一是矩阵乘法在MATLAB中的计算顺序是从左到右,左结合;二是矩阵乘法本身的数学规则,需要满足匹配的条件。同时,可能需要提醒用户注意点和叉的区别,避免混淆。</think>在MATLAB中,矩阵乘法的计算顺序遵循**从左到右**的默认顺序(左结合性)。具体来说,对于表达式如$A \times B \times C$,MATLAB会先计算$A \times B$,再将结果与$C$相,即等效于$(A \times B) \times C$[^2]。 ### 关键细节说明: 1. **数学规则**: 矩阵乘法要求相邻矩阵的维度匹配。例如,若$A$是$m \times n$矩阵,$B$是$n \times p$矩阵,则$A \times B$的结果是$m \times p$矩阵。若后续再以$C$(需为$p \times q$矩阵),则最终结果为$m \times q$矩阵。 2. **运算优先级**: - 矩阵乘法运算符`*`的优先级高于加减法,但低于括号。 - 若需要改变默认顺序,需显式使用括号。例如,$A \times (B \times C)$会先计算$B \times C$。 3. **点与叉的区别**: - `*`表示叉(线性代数中的标准矩阵乘法)。 - `.*`表示点(对应元素相),要求两矩阵维度完全一致[^1]。 ### 示例代码: ```matlab A = [1 2; 3 4]; % 2x2矩阵 B = [5 6; 7 8]; % 2x2矩阵 C = [9 10; 11 12];% 2x2矩阵 % 默认顺序:(A*B)*C result1 = A * B * C; % 强制顺序:A*(B*C) result2 = A * (B * C); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值