使用一维数组的矩阵乘法

Matrix multiplication using 1d arrays

本文关键字:一维数组      更新时间:2023-10-16

我正在尝试将存储在 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;
        }
    }

那么,谁能发现我做错了什么?

谢谢。。。

你的意思很可能是<而不是<=在你的for循环中。

尝试在for中使用i < rAj < cBk < rB