注册 登录
编程论坛 C++教室

新人求教高手帮忙解释下,矩阵相乘的问题。

BlizzardKen 发布于 2011-04-26 20:20, 548 次点击
#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;
int main(int argc, char* argv[])
{
    int m[3][4]={{1,2,3,4},{2,2,3,1},{5,4,2,3}};
    int n[4][3]={{6,3,2},{2,8,1},{6,9,5},{2,4,6}};
    int i,j,k;
    int q[3][3]={{0},{0},{0}};
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<4;k++)
 q[i][j]=q[i][j]+m[i][k]*n[k][j];
for(i=0;i<3;i++)
{

    for(j=0;j<3;j++)
        cout<<q[i][j]<<" ";
    cout<<endl;
}
return 0;
}
帮忙解释下这里为什么会有两个q[i][j]:   q[i][j]=q[i][j]+m[i][k]*n[k][j];
4 回复
#2
玩出来的代码2011-04-26 20:35
你是概念没弄清、
#3
BlizzardKen2011-04-26 20:43
回复 2楼 玩出来的代码
帮忙解释下好么,刚学没多久
#4
pangding2011-04-26 21:29
按矩阵乘法定义(假设是 m*l 和 l*n 的两个矩阵)不是
qij = ai1*b1j + ai2*b2j + ... aik*bkj + ... + ail*blj
不是得累加在一起吗。它算出第 k 项之后,得把它和之前的都加起来。之前的就是 q[i][j]。
#5
Noll_Nie2011-04-26 21:33
当然是两个啦
这里是求和嘛,要将所有的乘积加起来才是乘积矩阵的一个元素
还可以写成
 q[i][j] += m[i][k] * n[k][j];
1