Matlab求10个数最大最小值程序报索引超出数组错误如何修正
Matlab求10个输入值最大最小值报错修复方案
报错根本原因
- 笔误触发超界:代码第11行你写的是
array(i+i),不是预期的array(i+1),当i≥6时i+i的计算结果≥12,超出了数组的10个元素长度,直接触发报错 - 循环逻辑冗余:第二层循环写了i从1到10,虽然加了i==10就break的判断,但本质可以直接把循环范围设为1:9,避免多余的边界判断
- 求最大最小的逻辑本身错误:现有逻辑仅比较相邻两个元素的大小,无法得到整个数组的全局最大最小值,同时还存在初始值设为0的问题,如果输入全为负数结果会完全错误
修复后可直接运行的代码
% 预分配数组空间 array = zeros(1,10); % 收集10个用户输入 for i = 1:10 array(i) = input("Enter your numbers: "); fprintf("Numbers are array(%d)=%d\n",i,array(i)); end % 初始化最大最小值为数组第一个元素,避免初始值偏差 max_val = array(1); min_val = array(1); % 遍历剩余元素更新最大最小值 for i = 2:10 if array(i) > max_val max_val = array(i); end if array(i) < min_val min_val = array(i); end end % 输出最终结果 fprintf("输入数组的最大值为:%d,最小值为:%d\n", max_val, min_val);
额外优化说明
- 不要用
max、min作为变量名,二者是Matlab内置的求最大最小值的原生函数,重名会导致后续无法调用内置功能 - 如果你不需要自己实现遍历逻辑,直接调用内置函数即可快速得到结果:
- 求最大值:
max_val = max(array) - 求最小值:
min_val = min(array)
- 求最大值:
内容的提问来源于stack exchange,提问作者Johnny
相关产品推荐
相关产品推荐

