MATLAB中能否在for循环内部获取循环的最大迭代次数?
MATLAB循环内获取迭代变量ii的最大值方法
最直接且推荐的方案:提前存储随机上限值
MATLAB的for循环迭代范围在循环启动时就已确定,randi(100)的结果在循环开始前就生成了,只是没保存。只需把这个值存成变量,就能在循环内直接调用:max_ii = randi(100); for ii = 1:max_ii a = max_ii; myFunc(ii/a); end这种方式性能高、可靠性强,是常规场景下的最优解。
不推荐的hack式方案(仅作特殊场景参考)
如果确实无法提前存储变量,可通过调试函数解析代码文本获取上限,但这种方法依赖代码格式,稳定性差,不适合用于生产代码:for ii = 1:randi(100) % 从调用栈获取当前循环的代码信息 stack_info = dbstack('-completenames'); % 读取循环所在行的代码 code_lines = fileread(stack_info(1).file); code_lines = split(code_lines, newline); loop_code = code_lines(stack_info(1).line); % 解析出循环上限值 max_ii = eval(regexp(loop_code, '1:(\d+)', 'tokens', 'once')); a = max_ii; myFunc(ii/a); end
内容的提问来源于stack exchange,提问作者magnesium
相关产品推荐
相关产品推荐

