c - 矩阵相乘

标签 c

<分区>

我想知道我哪里出了问题。以下是我的矩阵乘法函数。

void matMul(Matrix A, Matrix B, int ARows, int ACols, int BCols, Matrix C){
int x,y,z;
for(x=0; x<ARows; x++){
    for(y=0; y<BCols; y++){
        for(z=0; z<ACols; z++){
            C[x][y]+=(A[x][z])*(B[z][y]);
        }
    }
}
} /* matMul */

但是,它并没有完成将矩阵相乘的工作。谁能看出我哪里搞砸了?

最佳答案

您需要将 C 的条目设置为 0。您可以在初始化对象时执行此操作,或者如果在那里执行此操作(就代码而言)成本太高,您可以移动它们与矩阵乘法:

void matMul(Matrix A, Matrix B, int ARows, int ACols, int BCols, Matrix C){
int x,y,z;
for(x=0; x<ARows; x++){
    for(y=0; y<BCols; y++){
        C[x][y] = 0;
        for(z=0; z<ACols; z++){
            C[x][y]+=(A[x][z])*(B[z][y]);
        }
    }
}
} /* matMul */

关于c - 矩阵相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19749197/

相关文章:

c - 不是将所有参数传递给函数不好吗?

c - 如何刷新输入缓冲区? (C)

c - 套接字数据损坏

c - C中的结构类型

c++ - C/C++ 文字

c - 套接字编程: sending and receiving different data to different clients in C

c - 试图创建一个结构,不让我输入字符串

c - 直接 io - 写入文件时 O_DIRECT 似乎不起作用

c - C 中的数组算术问题

c - 31 位方案中的最后地址是什么