我一直在尝试在 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 都由用户填写,打印时它们具有非零数据。