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

给定频率下创建重复脉冲串事件时间线的优化方法

生成重复脉冲串的时间线解决方案

我来帮你搞定这个脉冲串时间线的生成问题!你之前的代码是生成单频率的脉冲时间线,现在要改成以fq_burst频率输出n_pulse个脉冲的脉冲串,再以fq频率重复整个脉冲串,我们可以分步骤来实现:

核心思路拆解

  • 先计算单个脉冲串内的所有脉冲时间点(相对于串的起始时刻)
  • 再计算所有脉冲串的起始时刻(按fq的重复频率生成)
  • 通过广播将起始时刻和串内时间点结合,得到所有脉冲的时间戳
  • 最后过滤掉超出t0到tf范围的时间点

代码实现与解释

import numpy as np

# ----------- 自定义参数 -----------
t0 = 0               # 起始时间(ms)
tf = 500             # 结束时间(ms)
fq_burst = 50        # 脉冲串内部的脉冲频率(Hz)
n_pulse = 4          # 每个脉冲串包含的脉冲数量
fq = 5               # 脉冲串的重复频率(Hz)
# ----------------------------------

# 1. 计算单个脉冲串内的时间偏移(相对于串起始点)
# 每个脉冲间隔 = 1/fq_burst * 1000 ms,生成n_pulse个时间点
burst_offsets = np.round(np.arange(0, n_pulse * (1/fq_burst * 1000), 1/fq_burst * 1000), 3)

# 2. 计算所有脉冲串的起始时间
# 脉冲串的间隔 = 1/fq * 1000 ms,从t0开始生成到tf之前的起始点
burst_starts = np.round(np.arange(t0, tf, 1/fq * 1000), 3)

# 3. 用广播生成所有脉冲的时间戳:每个起始时间 + 串内所有偏移
all_timestamps = burst_starts[:, np.newaxis] + burst_offsets

# 4. 扁平化数组并过滤掉超过tf的时间点
timeline = np.round(all_timestamps.flatten(), 3)
timeline = timeline[timeline < tf]

print(timeline)

输出示例

运行上述代码后,会得到如下时间线:

array([  0.,  20.,  40.,  60., 200., 220., 240., 260., 400., 420., 440., 460.])

这个结果符合预期:

  • 每个脉冲串包含4个脉冲,间隔20ms(对应fq_burst=50Hz)
  • 脉冲串之间间隔200ms(对应fq=5Hz)
  • 所有时间点都在0到500ms范围内(左闭右开,所以不包含500ms)

适配你之前的单脉冲场景

如果要回到你最初的20Hz单脉冲场景,只需要设置:

  • fq_burst=20
  • n_pulse=1
  • fq=20
    运行代码后会得到和你之前一致的时间线:array([ 0., 50., 100., 150.])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:30:35