矩阵相乘改进算法(提高存储器访问效率) C语言实现

来源:互联网 发布:head first java 翻译 编辑:程序博客网 时间:2024/06/05 18:56

矩阵相乘改进算法(提高存储器访问效率) C语言实现

标签:计算方法实验

/*    矩阵A、B、C都按行(数据的存储顺序)访问,以提高存储器访问效率,    对于A的第i行中,第j列的元素分别和B的第j行的元素相乘,    对于B中相同的列k在上述计算过程中求和,从而得到C第i行k列的数据。    出处:  http://blog.csdn.net/denlee/article/details/4206923*/#include <stdio.h>#define M 4#define N 3#define L 3int main(){    double a[M][N], b[N][L], c[M][L];    freopen("Array.txt", "r", stdin);    freopen("ans2.txt", "w", stdout);    for(int i = 0; i < M; i++)        for(int j = 0; j < N; j++)            scanf("%lf", &a[i][j]);    for(int i = 0; i < N; i++)        for(int j = 0; j < L; j++)            scanf("%lf", &b[i][j]);    int temp[L] = {0};    for(int i = 0; i < M; i++)    {        for(int t = 0; t < L; t++)            temp[t] = 0;        for(int j = 0; j < N; j++)  //当前行的每个元素            for(int k = 0; k < L; k++)                temp[k] += a[i][j] * b[j][k];        for(int k = 0; k < L; k++)        {            c[i][k] = temp[k];            printf("%lf\t", c[i][k]);        }        printf("\n");    }    return 0;}

数据文件
Array.txt
实验结果
ans2.txt