我一直在尝试在C中进行基本的矩阵计算,但将两个矩阵相乘总是返回0的值。在阅读了其他有类似问题的人之后,我仍然不明白为什么会发生这种情况。下面是乘法功能:C中的矩阵乘法总是返回0?
double** MatrixMultiplication(double** matrixA, double** matrixB,
int sizeXA, int sizeYA, int sizeXB, int sizeYB)
{
double** matrixC = MatrixAllocate(sizeXA, sizeYB);
for (int i = 0; i < sizeXA; i++) {
for (int j = 0; j < sizeYB; j++) {
for (int k = 0; k < sizeXA; k++) {
matrixC[i][j] += matrixA[i][k] * matrixB[k][j];
}
}
}
return matrixC;
}
而这是为MatrixAllocate
功能的代码:
double** MatrixAllocate(int sizeX, int sizeY) {
double **matrix;
matrix = (double**)malloc(sizeX*sizeof(double*));
for (int i = 0; i < sizeX; i++)
matrix[i] = (double*)malloc(sizeY*sizeof(double));
for (int i = 0; i < sizeX; i++) {
for (int j = 0; j < sizeY; j++) {
matrix[i][j] = 0;
}
}
return matrix;
}
两个矩阵matrixA和MatrixB由用户填充,并且印刷时,他们有非零数据。
返回值0意味着,该矩阵具有所有成员0,或者MatrixMultiplication的matrixC输出为NULL? – 2013-05-01 14:55:20
这里有个bug:'for(int k = 0; k
2013-05-01 14:58:13
您不需要在C程序中投射'malloc'的返回值。 – 2013-05-01 15:03:33