记性现在太差了,发个帖子权当记笔记了。
数据由一维数组保存,例如二行三列矩阵
则一维数组为[1,4,2,5,3,6]
fr,fc为前一矩阵行列,gr,gc为后一矩阵行列。
void Multi(double *X, double *Y, double *res, long fr, long fc, long gr, long gc)//这里fc和gr可以只有一个
{
long i, j, ind;
double tmp;
for(i=0; i < fr; i++)
for(j=0; j < gc; j++) {
tmp = 0.0;
for(ind = 0; ind < fc; ind++)
{tmp += X[i + ind*fr] * Y[ind + j*gr];
printf("X[%d]:%f * Y[%d]:%f :%fn",i + ind*fr,X[i + ind*fr],ind + j*gr,Y[ind + j*gr],tmp);}
res[i + j*fr] = tmp;
printf("%fn",res[i + j*fr]);
}
}
。。。。。。
double a1[6] = {1.0,2.0,3.0,4.0,5.0,6.0};
double a2[6] = {3.0,4.0,5.0,6.0,7.0,8.0};
double tmp[9]={0};
Multi(a1,a2,tmp,3,2,2,3);
for(int i=0;i<9;i++)
{
printf("%fn",tmp[i]);
}
。。。。。
结果:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)