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

Matlab中min(A,[],'all')与min(A(:))哪个执行效率更高?

Matlab中min(A,[],'all')与min(A(:))的效率对比

针对200×200的矩阵A,两种求全局最小值的写法中,min(A(:))的执行效率更高——这和很多人“A(:)展开矩阵会带来额外开销,min(A,[],'all')应该更快”的直觉相反,以下结合测试代码和逻辑来解释:

测试代码

rng(1)
res=rand(200,200);

timeitn= 100; % 可调整为更大数值提升测试稳定性
tic
for i=1:timeitn
    min(res,[],"all");
end
toc

tic
for i=1:timeitn
    min(res(:));
end
toc

测试结果

根据实际运行结果,min(res,[],"all")的耗时约0.0016秒,min(res(:))的耗时约0.0008秒,后者速度接近前者的2倍。

原因解释

  1. A(:)并非真正复制数据:Matlab的数组在内存中是按列优先连续存储的,A(:)只是创建了一个指向原矩阵内存的“视图”(引用),并没有生成新的展开数组,几乎没有额外内存开销和复制成本。
  2. min(A,[],'all')的额外逻辑开销:这种写法需要处理多维数组的维度遍历逻辑,底层实现中可能包含更多分支判断或维度适配代码,相比直接对一维“视图”调用min,多了一层维度处理的开销。
  3. 版本优化差异:不同版本的Matlab对两种写法的优化程度可能不同,但在多数常用版本中,针对一维数组的min函数经过了更充分的底层优化,执行效率更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:03:16