C中的2x2矩阵运算

我是C的完全新手。我正在尝试编写一个函数以将两个矩阵相乘。我将只处理2x2,所以我将列举它们。 我的想法是将结果设置为2x2。 目前我有这个,但是我不知道如何正确修复它。谢谢您的任何帮助。

float [][] product2(float A[2][2],float B[2][2]){ //works only on 2x2's!
    float C[2][2];
    C[0][0]=A[0][0]*B[0][0]+A[0][1]*B[1][0];
    C[0][1]=A[0][0]*B[0][1]+A[0][1]*B[1][1];
    C[1][0]=A[1][0]*B[0][0]+A[1][1]*B[1][0];
    C[1][1]=A[1][0]*B[0][1]+A[1][1]*B[1][1];
    return C;
}

编辑:

如果可能的话,我想避免使用输入矩阵来获取输出。 第2次迭代会成功吗?

float* traspose(float A[]){ // Metodo 1
float B[4];
B[1]=A[2];
B[2]=A[1];
return B;

}

我没有从编译器中得到任何错误,但是合法吗?

wish4star 回答:C中的2x2矩阵运算

我仍在学习C,但之前我尝试过相同的问题,这是我的解决方案。

void multiply(int array1[2][2],int array2[2][2],int array3[2][2]){
    for(int i=0; i<2; i++){
        for(int j=0; j<2; j++){
            for(int k=0; k<2;k++){
                array3[i][j] += array1[i][k] * array2[k][j];
            }
        }
    }
}

如果矩阵乘法也是矩阵的乘积,则应使用第三个矩阵存储结果,该矩阵将为array3,从而消除了对返回类型的需求,因此将void用作返回类型。前两个循环用于遍历array3,最里面的循环(k)用于遍历矩阵中的乘法点。

本文链接:https://www.f2er.com/2997944.html

大家都在问