C语言实现矩阵乘法的代码中变量k的作用是什么?
矩阵乘法代码中变量k的逻辑说明
k的核心作用
k是实现矩阵乘法累加逻辑的循环遍历变量,作用是遍历第一个矩阵第i行的所有列、同时遍历第二个矩阵第j列的所有行,匹配需要对应相乘的两组元素,最终通过累加得到结果矩阵对应位置的数值。
k的取值规则
你当前代码中定义了#define C 2,在计算每一个mul[i][j]的过程中,k会从0开始循环到C-1,也就是取0、1两个值,每轮循环对应一次乘积累加操作。
结合数学规则验证
以你提到的矩阵乘法公式mul[0][0] = a[0][0] × b[0][0] + a[0][1] × b[1][0]为例:
计算mul[0][0]时i=0、j=0:
- k=0时,执行
mul[0][0] += a[0][0] * b[0][0],完成第一项计算 - k=1时,执行
mul[0][0] += a[0][1] * b[1][0],完成第二项计算
两次循环结束后得到的结果和数学规则完全一致。
扩展说明
矩阵乘法的通用规则是:若A是M行K列的矩阵,B是K行N列的矩阵,二者相乘得到的结果矩阵C是M行N列的,其中C[i][j] = 求和(从t=0到t=K-1的A[i][t] * B[t][j]),你代码里的k就对应这个公式里的累加下标t,只是因为你当前的矩阵是2×2的,K值刚好等于C=2而已。
内容的提问来源于stack exchange,提问作者yxl
相关产品推荐
相关产品推荐

