我有一个函数,即乘以矩阵和向量:
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 ..有关如何解决它的任何想法?
答案 0 :(得分:0)
您有ans
和answer
。我希望你能弄明白其余部分;)
答案 1 :(得分:0)
这是您发布的实际代码吗?除了ans
和answer
等明显的问题之外,你的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++)
答案 2 :(得分:0)
两个for循环中的变量i和j永远不会改变,因为你似乎增加了行和列。这意味着您将始终在第二个for循环的主体中执行相同的求和。你的其他答案别无选择,只能保持0,因为你从未在init之后计算它们的值。
答案 3 :(得分:0)
您将所有值存储为ans
中的0,然后返回ans
。而您正在明确修改变量answer
。