2011-12-18 20 views
0

行列とベクトルを掛ける必要があります。行列とベクトルを掛ける

float** Mの寸法maxtrix:M×N個Iパラメータと機能を書いていることを達成するために

float* V長さnのベクトルです。

float* Rここでは、長さmのベクトルが既に割り当てられています。

int m, int n長さです。

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]); 
     } 
    } 
} 

問題は、私が得た結果は正しいものではないということです。

int i,j; 

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

完全な機能コード:

は、ここに私のコードです。 :-/ 何か案が ?

今後のお返事ありがとうございます。

EDIT

ソリューションは、あなたのヒントに感謝を発見しました!

この部分を追加して、Rをすべてゼロに設定しました。

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

完全なコードを示してください。サンプル入力、期待される出力、実際の出力も提供してください。これまで行ってきたデバッグについて教えてください... –

+0

@MarekSebera私は最初から正しいタグを付け加えましたが、なぜ私の質問がダウングレードされたのか分かりません... – TheTime

+2

私はあなたが提供していないためダウンしましたあなたの*完全な*コードは、どの入力が失敗したか、どのように失敗したか、またあなたがデバッグしたものをデバッグして教えてもらえませんでした。 –

答えて

1

Rを初期化するのを忘れましたか?スタック割り当てやmalloc()で割り当てられた場合、初期状態は定義されません。

+0

Rはすでに割り当てられて定義されています。 – TheTime

+2

@時間:しかし、すべてゼロに初期化されていますか? –

+1

どのように割り当てられましたか?ゼロ初期化しましたか?正しい答えを出すことができないコンパイル可能なコードの最小限の例を投稿してみませんか? –

関連する問題