快乐裤衩 发表于 2019-9-20 21:44:28

[课后作业] S1E20:二维数组 | 实现矩阵相乘算法问题

想求助一下 实现矩阵相乘算法,这里的过程是怎么样的
int main()
{
      int a = {
                {1, 2, 3},
                {4, 5, 6}};

      int b = {
                {1, 4},
                {2, 5},
                {3, 6}};

      int c = {0};

      int i, j, k, row;

      for (i = 0; i < M; i++)
      {
                for (j = 0; j < N; j++)
                {
                        for (k = 0; k < P; k++)
                        {
                              c += a * b;
                        }
                }
      }
矩阵原理已经知道
但是这里怎么实现,或者为什么这样,详细过程不明白
for (i = 0; i < M; i++)
      {
                for (j = 0; j < N; j++)
                {
                        for (k = 0; k < P; k++)
                        {
                              c += a * b;

superbe 发表于 2019-9-20 22:29:06

M行P列的矩阵 和 P行N列的矩阵相乘,结果是一个M行N列的矩阵,第一个矩阵列数必须等于第二个矩阵行数。

for (i = 0; i < M; i++)    //循环计算结果矩阵的 1 至 M 行
      {
                for (j = 0; j < N; j++)    //循环计算结果矩阵的 1 至 N 列
                {
                        for (k = 0; k < P; k++)    //循环计算结果矩阵每个数
                        {
                              c += a * b;   // i 行 j 列位置的数等于第1个矩阵的i行 与 第二个矩阵j列对应相乘再求和,即所谓“点积”。就是类似这样:a1b1+a2b2+……+a(p)b(p),p是最大的下标,为了区分加了括号。

快乐裤衩 发表于 2019-9-21 14:00:08

superbe 发表于 2019-9-20 22:29
M行P列的矩阵 和 P行N列的矩阵相乘,结果是一个M行N列的矩阵,第一个矩阵列数必须等于第二个矩阵行数。

...

还是没懂哎。。。。
页: [1]
查看完整版本: [课后作业] S1E20:二维数组 | 实现矩阵相乘算法问题