如何将2个矩阵与1d数组表示相乘?

时间:2020-09-16 00:13:53

标签: arrays c matrix matrix-multiplication

我正在编写一个程序,该程序将从文件中读取具有以下格式的矩阵:

2 3
0 1 2
3 4 5

我将使用一维数组(也包含维度,代表该数组,因此生成的数组将为:

A: {2, 3, 0, 1, 2, 3, 4, 5}

现在,我要将此矩阵乘以另一个格式相同的矩阵。我知道如何将两个矩阵相乘,我唯一的问题是在实际写作中。我不确定自己在做什么错,因为当我逐步执行这些步骤时,这似乎是合乎逻辑的,但显然并非如此。

下面是我尝试将两个矩阵相乘的方法:

void multiply(double *A, double *B){
    double *C=malloc(B[1]*A[0]*sizeof *C);

    int a_rows=A[0];
    int a_cols=A[1];
    int b_rows=B[0];
    int b_cols=B[1];

    printf("ar: %d, ac: %d, br: %d bc: %d\n", a_rows, a_cols, b_rows, b_cols);
    int l = 0;
    double val = 0;
    for(int i=2;i<b_rows+2;i++){
        for(int j=2;j<b_cols+2;j++){
            for(int k=0;k<a_cols;k++){
                val=val+A[i*b_cols+k]*B[b_rows*b_rows+j];
            }
            C[l]=val;
            l++;
            val = 0;
        }
    }

    for(int i=0;i<b_cols*a_rows;i++){
        printf("%d: %f\n",i, C[i]);
    }
    free(C);
}

现在,我相信我在索引编制方面一定犯了一个错误,但此刻已经超出了我的范围。

0 个答案:

没有答案
相关问题