0

我有一个函数,就是将矩阵和向量相乘:

 double *matrix_vector_multiply(int rows, int cols,
                           double **mat, double *vec)
{

    double *answer = malloc(rows * sizeof (double));
    int i,j;
    for (i=0; i<rows; rows++)
    ans[i]=0;

    for (i=0; i<rows; rows++){

        for (j=0; j<cols; cols++)
             {
            answer[i] = answer[i] + mat[i][j] * vec[j];
            }
        }
    return ans;
}

我一直得到所有输出的 0.. 关于如何修复它的任何想法?

4

4 回答 4

0

你有ansanswer。我希望你能弄清楚其余的;)

于 2012-10-23T07:37:03.100 回答
0

这是您发布的实际代码吗?除了等方面的明显问题ansanswer,您的 for 循环是完全错误的,例如

for (i=0; i<rows; rows++)

应该:

for (i=0; i<rows; i++)

和:

    for (j=0; j<cols; cols++)

应该:

    for (j=0; j<cols; j++)
于 2012-10-23T07:38:25.710 回答
0

你的两个 for 循环中的变量 i 和 j 永远不会改变,因为你似乎增加了 rows 和 cols 。这意味着您将始终在第二个 for 循环的主体中执行相同的求和。您的其他答案别无选择,只能保持在 0,因为您在初始化后从不计算它们的值。

于 2012-10-23T07:40:50.587 回答
0

您将所有值存储为 0 ans,然后返回ans. 而您显然正在修改 variable answer

于 2012-10-23T08:28:20.463 回答