MATLAB中如何循环10000次函数并正确记录三类输出
解决MATLAB循环中保存多次函数输出的问题
你的代码问题有两个:
- 每次循环都重新定义
Sl、Ml、Ll,之前循环产生的数据会被直接覆盖,最终只保留最后一次循环的结果。 - 错误地将循环变量
trials拼接到结果数组里,应该存储的是每次函数返回的S、M、L值。
这里提供两种可行的修改方案:
方案一:新手友好的动态扩展方式
先初始化空数组,每次循环将当前的S、M、L追加到数组末尾:
Sl = []; Ml = []; Ll = []; for trials = 1:10000 [S,M,L] = crayonBreak(); Sl = [Sl; S]; Ml = [Ml; M]; Ll = [Ll; L]; end
方案二:高效的预先分配内存方式
MATLAB中动态扩展数组会频繁重新分配内存,对于10000次循环,预先分配好数组内存能大幅提升运行效率(假设S、M、L都是标量,若为向量需调整数组维度):
% 预先分配10000行1列的数组 Sl = zeros(10000, 1); Ml = zeros(10000, 1); Ll = zeros(10000, 1); for trials = 1:10000 [S,M,L] = crayonBreak(); Sl(trials) = S; Ml(trials) = M; Ll(trials) = L; end
计算平均值
得到完整的结果数组后,直接用mean()函数计算平均值:
mean_S = mean(Sl); mean_M = mean(Ml); mean_L = mean(Ll);
内容的提问来源于stack exchange,提问作者NotShikamaru
相关产品推荐
相关产品推荐

