计算正弦信号的频率,c++
Compute frequency of sinusoidal signal, c++
我有一个正弦形状的信号,我想计算频率。我试图实现一些东西,但看起来很困难,知道吗?到目前为止,我有一个带有时间步长和值的向量,我如何从中得到频率?感谢
如果输入信号是完美的正弦曲线,则可以使用正0交叉点之间的时间来计算频率。找到信号从负变为正的两个连续实例,并测量其间的时间,然后将该数字反转,从周期转换为频率。请注意,这仅与采样间隔一样准确,并且不考虑任何潜在的混叠。
您可以尝试自动关联信号。通过以下步骤可以快速计算自相关:
- 对音频执行FFT
- 将每个复数值与其复共轭相乘
- 执行音频的反向FFT
最左边的峰值将总是最高的(因为信号总是与自身相关最好)。然而,第二高峰可以用于计算正弦曲线的频率。
例如,如果第二个峰值出现在50点的偏移(滞后)处,并且采样率为16kHz,并且窗口为1秒,则结束频率为16000/50或320Hz。您甚至可以使用插值来获得峰值位置的更准确估计,从而获得更准确的正弦频率。这种方法非常强烈,但在添加了大量噪声后,非常适合估计频率!
相关文章:
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 在指针的帮助下,文本文件中单词的频率
- 函数计算用户按下按钮的频率
- 在条件变量中触发错误信号的频率是多少
- 如何在 c++ 中循环中使用频率变化的声音?
- 查找给定范围内最长连续 1 的频率
- 字母 字母频率
- WM_PAINT消息频率:C#(.Net Framework 4.7.2 WinForms)与C++
- 创建一个函数,返回给定单词在C++中的频率
- 如何期望通过使用Google Test(Mock)以特定频率调用函数
- 跟踪多个文件中一系列字符的频率
- 用于检测特定频率的直接显示滤波器
- 这句话是什么意思?半 += 字符串(频率[i] / 2, i + 'a');
- 如何使用C++中的频率表计算模式
- 如何计算数字 x 的频率
- 除了使用 clock() 函数之外,有没有更好的方法来以给定的频率生成/发布数据
- 如何在 c++ 中使用 FFT 从 32 位浮点数组中提取频率
- 打印频率和重复的字符串
- 以 mp3 为单位的频率
- 查找每个数组元素的频率