如何在动作循环中对电池电量数值按区间分组归类?
电池电量分组实现思路与代码示例
核心思路
- 提前创建10个空分组容器(推荐用动态数组/细胞数组,适配各分组长度不固定的场景)
- 在生成每个电池电量的循环中,实时计算当前电量对应的分组索引
- 将电量值直接追加到对应分组中
具体实现(以MATLAB为例,适配你的原始循环语法)
1. 初始化分组
先创建一个包含10个空数组的细胞数组,用来存放各分组数据:
groups = cell(1, 10); for i = 1:10 groups{i} = []; end
2. 改造原循环,加入分组逻辑
在你原有的循环内部,每生成一个battery_lvl后,执行分组判断并添加数据:
max_actions = 100; % 替换为你的实际最大动作数 a = true; % 替换为你的实际判断条件 x = 5; % 替换为你的实际x值 y = 15; % 替换为你的实际y值 for action = 1:max_actions % 原逻辑生成电池电量 battery_lvl = a ? x : y; % 简化写法,和你的if-else等效 % 计算分组索引 if battery_lvl == 100 group_idx = 10; else group_idx = floor(battery_lvl / 10) + 1; % 处理异常值(如电量<0),强制归到第1组 group_idx = max(group_idx, 1); end % 将当前电量追加到对应分组 groups{group_idx} = [groups{group_idx}, battery_lvl]; end
3. 结果说明
执行完循环后:
groups{1}对应0-10区间的电量值groups{2}对应10-20区间的电量值- ...
groups{10}对应90-100区间的电量值
完全匹配你预期的分组结果。
其他语言适配提示
如果用Python,逻辑完全一致:
- 用
list of lists初始化分组:groups = [[] for _ in range(10)] - 分组索引计算:
group_idx = math.floor(battery_lvl / 10) if battery_lvl != 100 else 9(注意Python列表索引从0开始,group1对应索引0,group10对应索引9) - 追加数据:
groups[group_idx].append(battery_lvl)
内容的提问来源于stack exchange,提问作者nemo92world
相关产品推荐
相关产品推荐

