1

我想知道我在这里哪里出错了。以下是我的矩阵乘法函数。

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 */

但是,它并没有完成将矩阵相乘的工作。谁能发现我似乎搞砸了?

4

1 回答 1

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 */
于 2013-11-03T02:28:33.070 回答