文中计算结果是与Matlab对比过的。但是,如有发现错误谢谢告之。
函数实现:
/********************************************************************
* 函数功能:(aM*bN的矩阵mR) = (aM*aN的矩阵mA) x (bM*bN的矩阵mB)。 *
* 前行后列(前高后宽)即为相乘结果矩阵的大小: *
* 前矩阵的行数(高aM) x 后矩阵的列数(宽bN)。 *
*********************************************************************/
template <typename T1, typename T2, typename T3>
int Matrix_Mult(T1* mA, //矩阵A
int aM, //矩阵A的行数(高)
int aN, //矩阵A的列数(宽)
T2* mB, //矩阵B
int bM, //矩阵B的行数(高)
int bN, //矩阵B的列数(宽)
T3* mR, //矩阵R=矩阵A*矩阵B
int chan=1 //例如RGB24可以看成是R、G、B 3个通道
)
{
//前矩阵的宽(列数)必须等于后矩阵的高(行数)
if (aN != bM || mA==0 || mB==0 || mR==0)
{
return -1;
}
int iTemp0 = 0;