所以我试图编写一个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创建二维数组有关,但是,我不知道如何执行它。
答案 0 :(得分:0)
如果您的矩阵为A
和B
以及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] ...
所以:
您需要检查nColsOfA == nRowsOfB
,否则未定义乘法。
您希望C
包含nRowsofA
行和nColsOfB
列。
您需要在代码中的内部循环中使用另一个循环来计算每个C[i][j]
的上面的总和。这会将值0
循环到nColsofA - 1
。