我一直在尝试用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都由用户填充,并且在打印时它们具有非零数据。
最佳答案
在矩阵A和B相乘之前,检查矩阵A的行长和矩阵B的列长是否相等。
关于c - C中的矩阵乘法总是返回0?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16320462/