我的矩阵向量乘法 returns c 中不正确的向量值

My matrix vector multiplication returns an incorrect vector value in c

我的代码中有一个二维向量,其中包含以下格式的元素

91 86 94
12 54 88
79 58 66

和包含以下格式元素的向量

14
20
22

我在 c 中开发的代码,用于乘以两个 returns 结果的前两行 (3x1)正确但第三个元素不正确,我需要帮助修改我的乘法循环,以便我得到所有结果行成员的正确值。我的代码returns以下作为结果向量[=14的成员=]

5062
3184
10096598

当你计算的时候,你可以看到最后一个值是不正确的,数组在c中对我来说是相当具有挑战性的,尤其是二维数组。下面是我的代码,您可以创建自己的两个 csv 文件并使用此代码将 marix 与向量相乘,看看您得到什么并提出更改建议

你的 out_vec 初始化是错误的:sizeof(out_vec) 只会 return 指针大小,我猜是 8,而你的数组权重是 12.

您写道:

int* out_vec = malloc(V_ROWS*sizeof(int));
memset(out_vec, 0, sizeof(out_vec));

应该是:

int* out_vec = malloc(V_ROWS*sizeof(int));
memset(out_vec, 0, V_ROWS*sizeof(int));

或更好:

int * out_vec = calloc(V_ROWS, sizeof(int));