直接给出实现代码
/*注意:
1、k关联B矩阵的列数
2、j关联A矩阵的行数
3、l关联A矩阵的列数、关联B矩阵的行数*/
vector<vector<double> > jvzhengchengfa33_32(double a[3][3], double b[3][2])
{
int temp = 0;
vector<vector<double> > o_vector;
vector<double> i_vector;
for (int j = 0; j < 3; j++)
{
i_vector.clear();
for (int k = 0; k < 2; k++) //循环代表矩阵A的同一行和矩阵B的不同列相乘,k只用来控制B矩阵的列变化,同时也用来指明向外层vector push的次数
{
for (int l = 0; l < 3; l++) //循环代表矩阵A的定行的不同元素与之对应的B矩阵的定列的对应元素相乘
{
temp += a[j][l] * b[l][k]; //通过累加运算,计算出A矩阵和B矩阵对应行和列的乘积
}
i_vector.push_back(temp);
temp = 0; //在每次将矩阵中的一个元素求出之后,需要对temp置为0,再进行下一个元素的运算
}
o_vector.push_back(i_vector);
}
return o_vector; //最后通过计算,外层vector的元素个数等于矩阵相乘之后的行数,内层vector的元素个数等于列数
}
注意在向内层push元素的时候,每push一次,就需要将temp赋值为0
代码只对3*3的矩阵进行运算,若是需要对于其他大小的矩阵进行运算,则只需要改变jkl三个变量的值,根据代码区的提示。