2011-12-18 100 views
0

我需要乘以一个矩阵和一个向量。乘以一个矩阵和一个向量

为了实现我已写了参数的函数:

float** M尺寸的maxtrix:m×n个。

float* V长度为n的矢量。

float* R我在哪里存储结果,长度为m的矢量,已分配。

int m, int n长度。

这里是我的代码:

int i,j; 

for (i=0;i<m;i++){ 
    for (j=0;j<n;j++){ 
      R[i]+=(M[i][j]*V[j]); 
     } 
} 

完整的功能代码:

void m_mult_v(float** M, float* V, float* R, int m, int n) { 

    int i,j; 

    for (i=0;i<m;i++){ 
     for (j=0;j<n;j++) { 
      R[i]+=(M[i][j]*V[j]); 
     } 
    } 
} 

的问题是,我得到的结果是不正确的。 :-/ 任何想法 ?

感谢您的未来答案!

编辑

发现的解决方案感谢您的建议!

我刚添加的代码该部分中,与R设置为全零。

for (i=0;i<m;i++){ 
    R[i] = 0; 
} 
+4

请显示您的完整代码。另请提供样本输入,预期输出和实际输出。也请告诉我们,到目前为止,你做了什么调试... – 2011-12-18 16:37:46

+0

@MarekSebera我从一开始就选择正确的代码加入,我不知道我为什么我的问题得到了降级...... – TheTime 2011-12-18 16:41:49

+2

我downvoted,因为你没有提供你的*完整*代码,也没有告诉我们它失败了​​什么输入,也没有告诉我们失败的原因,也没有告诉我们你通过调试了解到了什么。 – 2011-12-18 16:43:50

回答

1

你忘了初始化R?如果它是堆栈分配或分配malloc()它的初始状态没有定义。

+0

R已分配和定义。 – TheTime 2011-12-18 16:43:58

+2

@TheTime:但它初始化为全零吗? – 2011-12-18 16:45:03

+1

分配方式如何?你是否初始化它?你为什么不发布一个不能产生正确答案的可编译代码的最小例子? – 2011-12-18 16:46:45