标签:
8.5矩阵运算,A是一个x行,y列矩阵,B是y行z列矩阵,把A和B相乘,结果是另外一个x行z列矩阵,每个位置的值由下公式决定,编写函数:
#include <stdio.h> void matrix_mutiply(int *m1, int *m2, int *r, int x, int y, int z) { //sum为求和值 int i, j, k, sum; for(i = 0; i < x; i++){ for(j = 0; j < z; j++){ //对i行j列的矩阵求值 for(sum = 0, k = 0; k < y; k++){ //由于m1 m2 r均为一维数组,矩阵上的i 行 j位,对应的一维坐标为 i * 列数 + j sum += m1[ i * y + k ] * m2[ k * z + j ]; } r[i * z + j] = sum; } } } int main() { int m1[6] = { 2, -6, 3, 5, 1, -1 }; int m2[8] = { 4, -2, -4, -5, -7, -3, 6, 7}; int r[12] = {}; matrix_mutiply(m1, m2, r, 3, 2, 4); int x, y; for(x = 0; x < 3; x++){ for(y = 0; y < 4; y++){ printf("%5d\t", r[x * 4 + y]); } printf("\n"); } return 0; }
输出:
标签:
原文地址:http://www.cnblogs.com/yangxunwu1992/p/5801351.html