实现两个稀疏矩阵 三元组顺序存储格式下 的乘法 matlab代码

%实现两个稀疏矩阵 三元组顺序存储格式下 的乘法

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值