从FFT样品中计算频率
Calculate frequency from FFT sample?
我正在使用虚幻引擎4中的以下代码捕获麦克风输入并获取结果的FFT。
我在基于此数据计算频率时遇到困难。
我尝试找到最大振幅并将其作为频率,但这似乎不正确。
// Additional includes:
#include "Voice.h"
#include "OnlineSubsystemUtils.h"
// New class member:
TSharedPtr<class IVoiceCapture> voiceCapture;
// Initialisation:
voiceCapture = FVoiceModule::Get().CreateVoiceCapture();
voiceCapture->Start();
// Capturing samples:
uint32 bytesAvailable = 0;
EVoiceCaptureState::Type captureState = voiceCapture->GetCaptureState(bytesAvailable);
if (captureState == EVoiceCaptureState::Ok && bytesAvailable > 0)
{
uint8 buf[maxBytes];
memset(buf, 0, maxBytes);
uint32 readBytes = 0;
voiceCapture->GetVoiceData(buf, maxBytes, readBytes);
uint32 samples = readBytes / 2;
float* sampleBuf = new float[samples];
int16_t sample;
for (uint32 i = 0; i < samples; i++)
{
sample = (buf[i * 2 + 1] << 8) | buf[i * 2];
sampleBuf[i] = float(sample) / 32768.0f;
}
// Do fun stuff here
delete[] sampleBuf;
}
我看不到代码段中要执行的傅立叶变换。无论如何,使用平均采样频率 r 给定的DFT n 样品,对应于bin k is k·的频率r/2n
相关文章:
- 函数计算用户按下按钮的频率
- 如何使用C++中的频率表计算模式
- 如何计算数字 x 的频率
- 如何使用二维数组来计算和存储来自其他数组的值的频率
- 使用标准库对矢量的矢量进行排序,并计算唯一出现的频率
- 计算 c# 中二进制文件符号的频率不起作用,但适用于等效的 c++ 代码
- C++:计算文件中ASCII字符的频率
- 计算整数向量的频率分布
- 计算文件中字符的频率.C++
- 从FFT样品中计算频率
- 是否可以计算出 std::vector 扩展其数组大小的频率
- 使用地图计算单词频率
- 计算文本输入中特定字符的频率
- 可以改进哈希以计算频率
- 高效频率计算的数据结构决策.
- 算法:计算单词列表频率的更好方法
- 使用for_each或累加来计算频率
- 计算正弦信号的频率,c++
- 扩展一个计算线路频率的程序
- 从频率响应计算FIR系数