c - c 中的矩阵乘法

标签 c matrix-multiplication

我正在尝试将 2 个矩阵 A 和 B 相乘,然后将结果存储在 c 中。矩阵存储在一维数组中。谁能告诉我我的代码有什么问题,为什么我不能打印矩阵 a 和 b 相乘得到的结果。

#include <stdio.h>
#include <stdlib.h>
int main(){
    int m, i, j, k, n, x;
    double *A, *B, *C, sum;

    //allocating dynamic memory
    A= (double*)malloc(m*n*sizeof(double));
    B= (double*)malloc(m*n*sizeof(double));
    C= (double*)malloc(m*n*sizeof(double));

    //initializing matrices with values
    for(i =0; i< m*n; i++){
        A[i] = 1.;
        B[i] = 2.;

    }
    //Multiplying the matrices
    for(i=0; i<m; i++ ){
        for (j=0; j<n; j++){
             sum =0;
             for(k=0; k<n; k++){
                 sum+= A[i*n +k]* B[k*n +j];
                 C[i*n +j] = sum;
                 printf("matrix result %f\n", C[i*n +j]); 
             }
        }
     }
     return 0;
  }

最佳答案

您必须在使用任何变量之前对其进行初始化,因此在您的代码中,您需要将 mn 初始化为 2,因为这是二维矩阵。

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

相关文章:

c - 使用 if (!!(expr)) 而不是 if (expr)

c++ - 使用 Boost Ublas lu_Factorize 时出错

python - 在numpy中找到子数组的点积

r - 文本矩阵乘法

OpenGL glMatrixMode(GL_PROJECTION) 与 glMatrixMode(GL_MODELVIEW)

无法计算大于 20 的阶乘! !怎么做?

c - _IO_puts 和动态指令计数

c++ - 使用 L 前缀(Visual C++ 编译器)时如何#define 硬编码字符串?

c - 使用 SQLite3 和 C 的段错误

c - 涉及多个进程的矩阵乘法中的共享内存