我想知道我在哪里出错了。以下是我的矩阵乘法函数。
void matMul(Matrix A, Matrix B, int ARows, int ACols, int BCols, Matrix C){
int x,y,z;
for(x=0; x<ARows; x++){
for(y=0; y<BCols; y++){
for(z=0; z<ACols; z++){
C[x][y]+=(A[x][z])*(B[z][y]);
}
}
}
} /* matMul */
然而,它没有将矩阵乘以它的工作。任何人都可以看到我似乎搞砸了吗?
答案 0 :(得分:1)
您需要将C
的条目设置为0.要么在初始化对象时执行此操作,要么在执行此操作时太昂贵(在代码方面),请将它们移动到矩阵乘法:
void matMul(Matrix A, Matrix B, int ARows, int ACols, int BCols, Matrix C){
int x,y,z;
for(x=0; x<ARows; x++){
for(y=0; y<BCols; y++){
C[x][y] = 0;
for(z=0; z<ACols; z++){
C[x][y]+=(A[x][z])*(B[z][y]);
}
}
}
} /* matMul */