美文网首页
WarMj:简单矩阵乘法代码解析

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

作者: WarMj | 来源:发表于2017-07-09 00:41 被阅读0次
    原式<br>图片出处:http://zh.wikihow.com/<br>
    下标展开

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

    矩阵分析

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

    代码分析

    #include<stdio.h>
    #include<stdlib.h>
    
    //函数声明
    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:简单矩阵乘法代码解析

          本文链接:https://www.haomeiwen.com/subject/wiwjhxtx.html