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

Matlab中如何用二维数组快速初始化三维数组?

高效创建重复二维切片的三维数组

你用循环初始化三维数组的方法速度慢,是因为MATLAB的解释型循环开销很高。这里有几种向量化的高效方法可以替代:

你的原实现代码:

a = rand(1000);
b = zeros(1000, 1000, 1000);
for i = 1:1000
  b(:,:,i) = a;
end

方法1:使用repmat函数(最直观)

repmat是MATLAB专门用来重复构造数组的函数,内部做了底层优化,速度远快于手动循环:

a = rand(1000);
b = repmat(a, [1 1 1000]); % 前两个维度保留原大小,第三个维度重复1000次

方法2:利用数组广播机制(简洁高效)

通过扩展二维数组的维度触发MATLAB的广播复制逻辑,无需额外工具函数:

a = rand(1000);
b = a(:,:,ones(1,1000)); % 扩展第三维度为1000个元素,自动复制a到每个切片

在R2016b及以上版本,还可以用repelem函数实现更直观的维度重复控制:

b = repelem(a, 1, 1, 1000); % 依次指定三个维度的重复次数

方法3:使用克罗内克积kron

通过kron将二维数组与三维单位数组结合,快速生成目标数组:

a = rand(1000);
b = kron(ones(1,1,1000), a);

这些方法的执行效率都远高于循环,其中repmat和广播的方法在大多数场景下表现最优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 20:50:35