2011-12-18 117 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