使用傅立叶变换查找心跳的 BPM [重复]

问题描述 投票:0回答:1

我有一个信号的傅立叶变换图。绘制信号的傅里叶变换与其索引号的关系。我得到了采样频率 (Fs) 和样本总数 (N),以及样本中两个最大峰值的索引。我希望通过这些信息找到信号的每分钟节拍数。我的第一个猜测是样本总数除以最大峰值的索引(N/(最大索引)。但是,我觉得应该对第二个最大峰值做一些事情。我很困惑在哪里指数发挥作用。任何帮助将不胜感激。

matlab signal-processing fft
1个回答
2
投票

真实输入数据的离散傅里叶变换具有一些对称性

X_{N-k} = X*_{k}
。我认为你的峰遵循这种关系。因此,只有前
N/2
点是相关的,您只能检测到低于
Fs/2
的频率,因为如果您以
Fs
的频率采样频率为
Fs/2
的正弦,您将看不到该正弦值与常数之间的差异。

BPM = (largest_index - 1)/N * Fs * 60

请注意,

-1
是必需的,因为第一个元素对应于零频率(即常数值)。

您始终可以通过手动确定两次心跳之间的峰值或通过使用已知频率生成的信号验证您的方法来检查您的代码。

© www.soinside.com 2019 - 2024. All rights reserved.