如何用同一数值初始化N维数组?是否存在专用函数?
初始化全同值N维数组的专门方法
嘿,这个问题问得挺实用的!你现在用T = zeros(1,7)+12;的方法完全可行,但确实有几个更专门的函数能直接帮你完成全同值N维数组的初始化,不用先创建全零数组再叠加数值,我给你梳理下:
ones()结合数值缩放:
这个思路和你的方法类似,但逻辑上更直观——先创建全1的N维数组,再乘以目标数值。比如你要的1行7列全12数组,写法是:T = ones(1,7)*12;对于更高维度的数组也适用,比如生成2×3×4的全12数组,只需要写
ones(2,3,4)*12就行。repmat()专门重复函数:
这是MATLAB里专门用来重复元素或矩阵的函数,非常适合初始化全同值数组。用法是repmat(目标值, 维度1, 维度2, ..., 维度N),对应你的需求就是:T = repmat(12, 1,7);要是你需要3维甚至更高维的数组,直接补充维度参数就行,比如
repmat(12, 2,3,4)会生成2×3×4的全12数组。这个函数的优势是灵活性强,哪怕你要重复的是一个小矩阵而非单个数值,也能直接使用。直接批量赋值(适合高维场景):
如果你已经有了一个数组结构(比如之前创建的空数组或全零数组),还可以直接通过全元素赋值来填充目标值,写法是:T = zeros(2,3,4); T(:) = 12;这种方式和你最初的方法效率差不多,只是写法不同。
其实你的初始方法已经很高效了,MATLAB对数组运算的优化做得很好,这些方法在性能上差异极小,主要看哪种写法更符合你的代码习惯~
内容的提问来源于stack exchange,提问作者Tripoli
相关产品推荐
相关产品推荐

