我的矩阵向量乘法在c中返回了一个不正确的向量值



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

91 86 94
12 54 88
79 58 66

以及包含以下格式的元素的矢量

14
20
22

我在c中开发的用于将两者相乘的代码正确地返回了结果的前两行(3x1(,但第三个元素不正确,我需要帮助修改乘法循环,以便获得所有结果行成员的正确值。。我的代码返回以下作为结果向量的成员

5062
3184
10096598

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

您的out_vec初始化错误:sizeof(out_vec)只会返回指针大小,我想是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));

相关内容

  • 没有找到相关文章

最新更新