矩阵乘法计算 20

编写一个函数实现矩阵A(2行3列)与矩阵B相乘(3行2列),乘积放在C数组中,在主函数中输入相乘的两数组,并输出结果(TC,2.0条件下)... 编写一个函数实现矩阵A(2行3列)与矩阵B相乘(3行2列),乘积放在C数组中,在主函数中输入相乘的两数组,并输出结果(TC,2.0条件下) 展开
 我来答
大郑文教
2008-06-28 · TA获得超过710个赞
知道小有建树答主
回答量:850
采纳率:22%
帮助的人:345万
展开全部
Status MultSMatrix(TSMatrix M,TSMatrix N,TSMatrix *Q)
{ /* 求稀疏矩阵的乘积Q=M×N */
int i,j;
ElemType *Nc,*Tc;
TSMatrix T; /* 临时矩阵 */
if(M.nu!=N.mu)
return ERROR;
T.nu=M.mu; /* 临时矩阵T是Q的转秩矩阵 */
T.mu=N.nu;
T.tu=0;
Nc=(ElemType*)malloc((N.mu+1)*sizeof(ElemType)); /* Nc为矩阵N一列的临时数组(非压缩,[0]不用) */
Tc=(ElemType*)malloc((M.nu+1)*sizeof(ElemType)); /* Tc为矩阵T一行的临时数组(非压缩,[0]不用) */
if(!Nc||!Tc) /* 创建临时数组不成功 */
exit(ERROR);
for(i=1;i<=N.nu;i++) /* 对于N的每一列 */
{
for(j=1;j<=N.mu;j++)
Nc[j]=0; /* 矩阵Nc的初值为0 */
for(j=1;j<=M.mu;j++)
Tc[j]=0; /* 临时数组Tc的初值为0,[0]不用 */
for(j=1;j<=N.tu;j++) /* 对于N的每一个非零元素 */
if(N.data[j].j==i) /* 属于第i列 */
Nc[N.data[j].i]=N.data[j].e; /* 根据其所在行将其元素值赋给相应的Nc */
for(j=1;j<=M.tu;j++) /* 对于M的每一个值 */
Tc[M.data[j].i]+=M.data[j].e*Nc[M.data[j].j]; /* Tc中存N的第i列与M相乘的结果 */
for(j=1;j<=M.mu;j++)
if(Tc[j]!=0)
{
T.data[++T.tu].e=Tc[j];
T.data[T.tu].i=i;
T.data[T.tu].j=j;
}
}
if(T.tu>MAX_SIZE) /* 非零元素个数太多 */
return ERROR;
TransposeSMatrix(T,Q); /* 将T的转秩赋给Q */
DestroySMatrix(&T); /* 销毁临时矩阵T */
free(Tc); /* 释放动态数组Tc和Nc */
free(Nc);
return OK;
}
北京迪天嘉业
2025-08-10 广告
咨询服务热线010-82905660 北京迪天嘉业信息科技有限责任公司由一批IT精英组成的科技公司。我公司是英伟达中国区授权NPN。公司主要从事IT产品销售、系统集成和软件开发业务。公司专注于智算力、AI、HPC、算力租赁、数据中心业务。为... 点击进入详情页
本回答由北京迪天嘉业提供
帐号已注销
2020-05-04 · TA获得超过1.3万个赞
知道答主
回答量:10.3万
采纳率:2%
帮助的人:6103万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式