You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按条件拆分数组?以20ms间隔拆分时间信号为例

按20ms间隔拆分时间信号的解决方案

嘿,这个需求其实很好实现,核心就是先确定所有的20ms区间边界,再把每个时间点(以及对应的加速度数据)分配到对应的区间里就行。我给你一步步拆解,再附上Python代码示例,你可以直接套用:

核心思路

  • 先算出所有的20ms区间起始点:从37913ms开始,每次加20ms,直到接近40010ms为止。比如第一个区间是[37913, 37933),第二个是[37933, 37953),以此类推。
  • 对每个时间点,计算它属于哪个区间的起始点,然后把它(和对应的加速度值)添加到该区间的列表中。

代码实现(以Python为例)

假设你已经有了时间数组t_list和对应的加速度数组acc_list:

# 定义基础参数
start_time = 37913
end_time = 40010
interval = 20

# 初始化字典存储分组结果:键是区间起始时间,值是该区间的时间+加速度列表
grouped_data = {}

# 遍历每个时间点和对应的加速度
for t, acc in zip(t_list, acc_list):
    # 计算当前时间点所属的区间起始值
    # 公式逻辑:(t - 起始时间) // 间隔 得到是第几个区间,再乘以间隔加起始时间就是区间起点
    interval_start = start_time + ((t - start_time) // interval) * interval
    
    # 跳过超出结束时间的点
    if interval_start >= end_time:
        continue
    
    # 如果这个区间还没创建列表,先初始化
    if interval_start not in grouped_data:
        grouped_data[interval_start] = []
    
    # 添加当前的时间和加速度(也可以分开存两个列表,看你的需求)
    grouped_data[interval_start].append( (t, acc) )

# 如果需要按区间顺序得到单独的列表(比如list1, list2...)
sorted_groups = [grouped_data[start] for start in sorted(grouped_data.keys())]

# 示例:打印第一个区间的数据
print("第一个20ms区间的数据:", sorted_groups[0])

额外说明

  • 如果你只需要时间列表,把代码里的append( (t, acc) )改成append(t)就行,和你例子里的list1完全一致。
  • 这个方法比逐个遍历每个区间判断要高效得多,尤其是当你的时间点数量很大的时候。
  • 最后一个区间的结束会是39993 + 20 = 40013,但代码里会自动跳过t >= 40010的点,符合你的时间范围要求。

内容的提问来源于stack exchange,提问作者Salman Shaukat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 11:13:30