La multiplication de matrice à l'aide de tableaux 1d
Je suis en train de multiplier deux matrices stockées à l'intérieur des tableaux 1d.
Je suis en utilisant cette fonction, mais mon programme plante, je suppose en raison d'une erreur de limites.
Cependant, je n'ai pas (facile) capacité de debug, j'ai donc décider si mon code est correct, et pour moi, il semble qu'il est...
void SampleUtils::multiplyMatrices(float* matA, int rA, int cA, float* matB,
int rB, int cB, float* matC, int rC, int cC) {
for (int i = 0; i <= rA; i++) {
for (int j = 0; j <= cB; j++) {
float sum = 0.0;
for (int k = 0; k <= rB; k++)
sum = sum + matA[i * cA + k] * matB[k * cB + j];
matC[i * cC + j] = sum;
}
}
Donc, quelqu'un peut-il savoir ce que j'ai fait de mal?
Merci...
Si
1. Utiliser un débogueur pour savoir où il se bloque. 2. L'utilisation de vecteurs et d'appel
"... il me semble qu'il est...." - le fait que votre programme se bloque vous dit que cette déclaration est tout à fait incorrect. Vous trouverez rapidement une solution si vous commencez avec l'hypothèse que votre code est faux, et vous êtes celui qui fait en sorte.
N'est-ce pas
ouais, je pense que c'est incorrect. peut-être que mon anglais est éteint, mais c'était ma manière de dire: "je ne peux pas comprendre ce que l'enfer ne va pas avec elle" 🙂 Aussi, la somme doit être un float, évidemment 😛
rA
est le nombre de lignes de la matrice, alors la condition être i < rA
. De la même manière à d'autres endroits.1. Utiliser un débogueur pour savoir où il se bloque. 2. L'utilisation de vecteurs et d'appel
at
pour obtenir une exception levée si c'est une erreur de limites."... il me semble qu'il est...." - le fait que votre programme se bloque vous dit que cette déclaration est tout à fait incorrect. Vous trouverez rapidement une solution si vous commencez avec l'hypothèse que votre code est faux, et vous êtes celui qui fait en sorte.
N'est-ce pas
rB
toujours égale à cA
, et rC
n'est pas utilisé? En général, je pense que vous avez seulement besoin de trois tailles différentes (ra=rC
, rb=cA
, et cb=cC
, si je me souviens bien), pas plus de six; éliminer le solde non utilisé des paramètres afin de réduire la confusion.ouais, je pense que c'est incorrect. peut-être que mon anglais est éteint, mais c'était ma manière de dire: "je ne peux pas comprendre ce que l'enfer ne va pas avec elle" 🙂 Aussi, la somme doit être un float, évidemment 😛
OriginalL'auteur Tom Teman | 2012-04-20
Vous devez vous connecter pour publier un commentaire.
Les Chances sont que vous dire
<
au lieu de<=
dans votrefor
boucles.OriginalL'auteur Fraser
Essayez d'utiliser
i < rA
,j < cB
,k < rB
dans votrefor
OriginalL'auteur qehgt