我一直在尝试用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/

10-11 23:01
查看更多