在c中乘以矩阵

时间:2017-10-13 21:24:44

标签: 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;
  }

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  1. 您的变量nm未初始化。
  2. 你没有释放分配的内存。
  3. 使用一维数组作为2D是个好主意。
  4. 祝你好运!