我的矩阵向量乘法 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));
我的代码中有一个二维向量,其中包含以下格式的元素
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));