%实现两个稀疏矩阵 三元组顺序存储格式下 的乘法
clc;
clear;
p=0;% 判断输入的两个矩阵是否可以相乘
while(p==0)
disp('请输入矩阵A的三元组矩阵');
A=input('A=');
disp('请输入矩阵B的三元组矩阵');
B=input('B=');
mA= A(1,1);%A矩阵中的行数
nA= A(1,2);%A的列数
mB= B(1,1);%B矩阵中的行数
nB= B(1,2);%B的列数
if nA==mB
p=1;
m=mA;s=nA;p=nB;
A=A(2:size(A,1),:);
B=B(2:size(B,1),:);
C = [m,p,0];%相乘结果三元组矩阵
D=zeros(m,p);%矩阵形式
s=0;%结果中非0元素个数
for i = 1:m %第i行
for j = 1:p %第j列
sum_ij = 0; %Cij的值
for a_row = 1:size(A,1) %遍历A中所有行
for b_row = 1:size(B,1) %遍历B中所有行
if A(a_row,1)==i && A(a_row,2)==B(b_row,1) && B(b_row,2)==j
% 如果满足矩阵乘法
sum_ij = sum_ij + A(a_row,3)*B(b_row,3);
end
end
end
if sum_ij~=0
s=s+1;
C = [C;i,j,sum_ij];%三元组
D(i,j)=sum_ij;
end
end
end
disp('矩阵相乘结果,三元组形式:');
C(1,3)=s
disp('矩阵相乘结果,矩阵形式:');
D
else
disp('A,B两个矩阵不能相乘,请重新输入');
disp('如果想结束程序,请输入1,继续请按0');
p=input('');
end
end
实现两个稀疏矩阵 三元组顺序存储格式下 的乘法 matlab代码
最新推荐文章于 2022-10-30 10:46:25 发布