2012-04-20 92 views
4

我试图将存储在1d数组内的两个矩阵相乘。使用1d数组的矩阵乘法

我正在使用这个函数,但是我的程序崩溃了,我认为是由于出了界限错误。 不过,我没有(容易)调试能力,所以我必须决定是否我的代码是正确的,对我来说似乎是...

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

    } 

所以,任何人都可以找出我做了什么错误?

谢谢...

+1

如果'rA'是矩阵的行数,则条件** **必须是'I Mahesh 2012-04-20 19:50:23

+1

1.使用调试器找出崩溃的位置。 2.使用向量并调用'at'以获得抛出的异常,如果它是超出界限的错误。 – chris 2012-04-20 19:50:23

+1

“...对我来说,它似乎是....” - 事实上,你的程序崩溃告诉你,这个说法是相当不正确的。如果您从假设您的代码错误开始,那么您会更快地找到解决方案,而您就是这样做的。 – duffymo 2012-04-20 19:50:30

回答

8

机会是你的意思<而不是<=for循环。

+0

你是绝对正确的。愚蠢的错误在我的目的。 – 2012-04-20 19:54:47

6

尝试使用i < rAj < cBk < rBfor