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

技术问询:如何将10Hz信号转换为1Hz信号并关联对应脉冲?

10Hz信号转1Hz信号及脉冲对应实现方法

核心逻辑

把10Hz信号转成1Hz属于降采样操作:每1秒内的10个10Hz采样点合并为1个1Hz采样点。要实现“10Hz数据中出现1则1Hz对应一个脉冲”,只需判断每个1秒窗口内是否存在1值,存在则标记为1(脉冲),否则为0。

R语言实现代码

基于你提供的原始数据,用dplyr包就能快速完成处理:

# 加载处理包
library(dplyr)

# 原始10Hz数据
df10 <- data.frame( seq(5, 7 ,0.1),
                    c(0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0))
names(df10) <- c("t[10Hz]", "sign")

# 转换为1Hz带脉冲的数据集
df1 <- df10 %>%
  # 按1秒窗口分组:取时间的整数部分作为分组键
  mutate(t_group = floor(`t[10Hz]`)) %>%
  group_by(t_group) %>%
  # 生成脉冲信号:组内只要有1就输出1,否则0
  summarise(
    `t[1Hz]` = t_group,  # 1Hz的时间戳
    sign_1Hz = as.integer(any(sign == 1))
  ) %>%
  ungroup()

# 查看结果
print(df1)

结果说明

运行代码后得到的df1就是目标1Hz数据:

  • 时间列[t[1Hz]]对应5、6、7三个1秒窗口的时间戳
  • 信号列sign_1Hz中,只有6秒窗口(对应原数据6.0-6.9秒区间)存在1值,所以该位置标记为1(脉冲),其余窗口为0,完全匹配你要的效果。

如果需要更贴合实际采样习惯的时间戳(比如每个1秒窗口的中点),可以把floor(t[10Hz])改成floor(t[10Hz]) + 0.5,这样时间列会变成5.5、6.5、7.5。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:50:32