c - 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;
}
编辑:
如果可能的话,我想避免使用输入矩阵来获取输出。这第二次迭代会起作用吗?
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 个循环用于遍历数组 3,最里面的循环 (k) 用于遍历矩阵中的乘法点。
推荐阅读
- javascript - Express js每次重启服务器时异步执行一个函数
- c# - 如何让我的 RabbitMQ 消费者只收到一条消息而不会超时并再次发送?
- bash - 无法在 docker 容器中启动服务
- css - 如何在页面上的某个路径为类名配置样式?
- javascript - Photoshop jsx 脚本 - 脚本工作正常,但我希望能够在没有对话和选择的情况下使用它
- javascript - 在调用 canvas.getObjects() 时将另一个 Fabric.js 对象添加到画布
- docker - 无法从另一台机器加载 docker 映像
- python - 如何增加 Tk 的标签字体大小(Python)
- r - ggplot2中自定义几何的自定义比例
- qt - 如何直接从 Qt 访问 sqlite3 而无需再次链接 sqlite3.dll