我正在编写一个应用程序,将使用FFT算法计算声音信号的DFT。FFT算法所需的输入是PCM样本-即,我有一个大的16位无符号整数列表。
我知道我需要使用窗口函数独立地计算声音信号的几个段的DFT,并且我已经编写了工作代码,将输入声音文件解码为原始PCM样本。
我的问题是关于维基百科上给出的DFT定义:
DFT应对输入x(0),x(1),...,x(N-1)执行可逆线性变换,其中每个x(n)是复数。然而,我不明白如何将我的解码样本整数转换为适合算法的复数。
我看到某些在线示例中,每个样本都被除以获取[0,1)范围内的浮点值,然后虚部设置为0。
这个缩放到[0, 1)是必要的吗?而且将每个样本表示为
我知道我需要使用窗口函数独立地计算声音信号的几个段的DFT,并且我已经编写了工作代码,将输入声音文件解码为原始PCM样本。
我的问题是关于维基百科上给出的DFT定义:
DFT应对输入x(0),x(1),...,x(N-1)执行可逆线性变换,其中每个x(n)是复数。然而,我不明白如何将我的解码样本整数转换为适合算法的复数。
我看到某些在线示例中,每个样本都被除以获取[0,1)范围内的浮点值,然后虚部设置为0。
这个缩放到[0, 1)是必要的吗?而且将每个样本表示为
x + 0i
,其中x
是样本值,是正确的吗?