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

Matlab中如何按顺序相乘N×N×M三维矩阵?有无内置函数?

三维矩阵切片顺序相乘的实现方案

直接用for循环(最实用)

这是最简单直观的方式,初始化结果为单位矩阵,依次遍历每个二维切片相乘即可:

N = size(A, 1);
result = eye(N);
for k = 1:size(A, 3)
    result = result * A(:,:,k);
end

别担心循环效率,MATLAB的JIT编译器会自动优化这类矩阵运算循环,实际跑起来速度并不慢,尤其是M规模不是极端大的时候,完全够用。

无显式循环的替代方式(可读性一般)

MATLAB没有专门的内置函数直接完成这个顺序矩阵乘法,但可以通过arrayfun配合累积逻辑实现,不过本质和循环没差,可读性还不如直接写循环:

N = size(A, 1);
result = eye(N);
result = arrayfun(@(k) result * A(:,:,k), 1:size(A,3), 'UniformOutput', false);
result = result{end};

这种写法没必要特意用,除非你执着于“无循环”代码。

特殊场景下的张量收缩(不推荐通用场景)

如果你的所有切片矩阵有特殊性质(比如都是对角矩阵、可同时对角化),可以尝试用张量收缩的方法计算,但这种场景非常少见,通用情况下完全没必要折腾。

总结:直接写for循环是最优选择,逻辑清晰、效率也没问题,MATLAB没有专门的内置函数一步搞定这个顺序相乘操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:20:41