矩阵相乘改进算法(提高存储器访问效率) 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 3
int 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;
}
数据文件
实验结果