C语言实现数组相乘–源码
//矩阵相乘
void mat_mul_mat_f(float *mata, float *matb, int mata_rown, int mata_coln, int matb_coln, float *output)
{
// 两个矩阵相乘的计算函数,通过三层for循环遍历每个矩阵元素,分别计算输出矩阵中每个元素的值
int i, j, k;
for (i = 0; i < mata_rown; i++)
{
for (j = 0; j < matb_coln; j++)
{
float _sfsum = 0;
for (k = 0; k < mata_coln; k++)
{
float _sftmp;
float _sfaValue, _sfbValue;
_sfaValue = *(mata + mata_coln * i + k);
_sfbValue = *(matb + matb_coln * k + j);
_sftmp = _sfaValue * _sfbValue;
_sfsum = _sfsum + _sftmp;
}
*(output + matb_coln * i + j) = _sfsum;
}
}
}
函数验证:
int main()
{
float a[4][3] = {{1,2,3},{4,5,6},{7,8,9},{11,12,13}};
float b1[3][2] = {{2,4},{6,8},{10,12}};
float c[4][2];
mat_mul_mat_f(a[0], b1[0], 4, 3, 2, c[0]);
for(int i=0;i<4;i++)
{
for(int j=0; j<2; j++)
{
printf("%f \t", c[i][j]);
}
printf("\n");
}
return 0;
}
计算结果: