You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MATLAB通过循环编写实现矩阵A*B乘法的自定义函数?

用循环实现MATLAB矩阵乘法函数的正确写法

原代码存在的问题

  • 维度校验缺失:矩阵乘法要求第一个矩阵的列数等于第二个矩阵的行数,原代码未做该判断,输入不符合要求的矩阵时会直接出错
  • 循环逻辑错误:矩阵乘积C(i,j)的计算规则是A的第i行与B的第j列对应元素相乘后求和,原代码错误使用B(j,i),且缺少遍历求和维度的循环(需三层循环:行、列、求和索引)
  • 矩阵初始化不当:用空矩阵prodAB=[]动态赋值会降低运行效率,还容易引发索引错误
  • 维度获取错误:length(A)返回矩阵最大维度的长度,应使用size(A,1)获取行数、size(A,2)获取列数,避免非方阵场景下的错误

修正后的函数代码

function prodAB = MultiplicoMatrices(A, B)
    % 校验矩阵维度是否符合乘法要求
    [rowsA, colsA] = size(A);
    [rowsB, colsB] = size(B);
    if colsA ~= rowsB
        error('矩阵A的列数必须等于矩阵B的行数!');
    end
    
    % 初始化结果矩阵为全零矩阵,提前指定维度
    prodAB = zeros(rowsA, colsB);
    
    % 三层循环实现矩阵乘法
    for i = 1:rowsA          % 遍历结果矩阵的每一行(对应A的行)
        for j = 1:colsB      % 遍历结果矩阵的每一列(对应B的列)
            sum_val = 0;
            for k = 1:colsA  % 遍历求和维度(A的列 = B的行)
                sum_val = sum_val + A(i, k) * B(k, j);
            end
            prodAB(i, j) = sum_val;
        end
    end
end

测试验证

输入测试矩阵:

A = [1 2; 3 4];
B = [5 6; 7 8];
prodAB = MultiplicoMatrices(A, B);

输出结果:

prodAB =
    19    22
    43    50

该结果与MATLAB内置的A*B计算结果完全一致,符合矩阵乘法的正确结果。

内容的提问来源于stack exchange,提问作者Xetrez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 18:20:54