我写了下面的矩阵乘法函数。
void sum_of_outer_product(float* A, float* B, float* &C, int M, int N)
{
C = (float*) malloc(sizeof(float) * M * N);
memset(C, 0, M * N * sizeof(float));
for(int r=0 ; r<M ; r++)
{
for(int c=0 ; c<N ; c++)
{
for(int cc=0 ; cc<N ; cc++)
{
C[r * N + c] += A[r * N + c] * B[r * N + cc];
}
}
}
}
但是,它们产生的结果与原始矩阵乘法(带转置)不同:
正确:
30 36 42
66 81 96
102 126 150
这个套路:
12 24 36
60 75 90
126 144 162
我做错了什么?