将矩阵相乘

时间:2013-11-03 02:22:52

标签: c

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

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

然而,它没有将矩阵乘以它的工作。任何人都可以看到我似乎搞砸了吗?

1 个答案:

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