矩阵乘法问题

时间:2014-12-03 02:13:59

标签: c matrix

所以我试图编写一个C函数来计算两个数组的乘法,但我有点卡住了。

double ** matrixMultiply(double **A, int nRowsOfA, int nColsOfA,
double **B, int nRowsOfB, int nColsOfB)
{

    double **out;
    int i, j, l;

    out=(double **)malloc(nRowsOfA*sizeof(double *));
    for (i=0;i<nRowsOfA; i++)
        out[i]=(double *)malloc(nColsOfB*sizeof(double));



    for (i=0;i<nRowsOfA; i++)
        for (j=0; j<nColsOfB; j++)
        {
          Some calculation to figure out how to multiply the two matrices together.
        }
    return out;

}

我很确定它与从i和j创建二维数组有关,但是,我不知道如何执行它。

1 个答案:

答案 0 :(得分:0)

如果您的矩阵为AB以及AB = C,则条目C[i][j]由以下人员提供:

A[i][1] x B[1][j] + A[i][2] x B[2][j] + A[i][3] x B[3][j] ...

所以:

  1. 您需要检查nColsOfA == nRowsOfB,否则未定义乘法。

  2. 您希望C包含nRowsofA行和nColsOfB列。

  3. 您需要在代码中的内部循环中使用另一个循环来计算每个C[i][j]的上面的总和。这会将值0循环到nColsofA - 1