繁体   English   中英

C 中的 2x2 矩阵运算

[英]2x2 Matrix operations in C

我是 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;
}

编辑:

如果可能,我想避免使用输入矩阵来获取输出。 这第二次迭代会起作用吗?

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

}

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

我自己仍在学习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 作为返回类型。 前 2 个循环用于遍历 array3,最里面的循环 (k) 用于遍历矩阵中的乘法点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM