WarMj:简单矩阵乘法代码解析

WarMj:简单矩阵乘法代码解析_第1张图片
原式
图片出处:http://zh.wikihow.com/

WarMj:简单矩阵乘法代码解析_第2张图片
下标展开

目前还不会申请动态数组(需要指针),所以先分析固定数组,之后补上。

矩阵分析

  • 矩阵相乘条件
  • 形如 ma[row][key]、mb[key][col]时,两矩阵可相乘。
  • 结果
  • 形式:mc[row][col]。
  • 乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

代码分析

#include
#include

//函数声明
void Matrix_Mul(const int ma[2][3], const int mb[3][2], int mc[2][2]);
void Put_Matrix(const int mc[2][2]);

int main()
{
    int ma[2][3] = {{2, 3, -1}, {6, 1, -2}};
    int mb[3][2] = {{4, -5}, {-3, 0}, {1, 2}};
    int mc[2][2] = {0};
    
    Matrix_Mul(ma, mb, mc);
    Put_Matrix(mc);
    
    system("pause");
    return 0;
 } 
  
//矩阵乘法函数 
void Matrix_Mul(const int ma[2][3], const int mb[3][2], int mc[2][2])
{
    int i, j, k;
    for(i = 0; i < 2; i++)//矩阵结果的行数。
    {
        for(j = 0; j < 2; j++)//矩阵结果的列数。
        {
            for(k = 0; k < 3; k++)//矩阵结果中某元素在计算过程中的循环次数(行与列相等的数)。
            {
                mc[i][j] += ma[i][k] * mb[k][j];
            }
        }
    }
 }

//矩阵输出函数
void Put_Matrix(const int mc[2][2])
{
    for(int i = 0; i < 2; i++)
    {
        for(int j = 0; j < 2; j++)
        {
            printf("%.2d ", mc[i][j]);
        }
        printf("\n");
    }
}

你可能感兴趣的:(WarMj:简单矩阵乘法代码解析)