WarMj:简单矩阵乘法代码解析
2017-07-09 本文已影响0人
WarMj
原式<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");
}
}