如果我问的一些问题不完全正确,我深表歉意,我是这个领域的新手,但非常感兴趣。
我有一个采样率为 44.1 kHz 的音频信号,我想将其分割为 30 帧,并获取每帧的 DFT 以找到该帧的某些频率的幅度。但是,这意味着我在每个 bin 中的频率分辨率为 30 Hz,这还不够窄。
是否可以对数据进行插值以获得更多数据样本?据我所知,将点数加倍将产生 88.2 kHz 的采样率,但仍会产生 30 的频率分辨率。是否可以将插值数据视为仍然具有 44.1 kHz 的采样率?
如果我问的一些问题不完全正确,我深表歉意,我是这个领域的新手,但非常感兴趣。
我有一个采样率为 44.1 kHz 的音频信号,我想将其分割为 30 帧,并获取每帧的 DFT 以找到该帧的某些频率的幅度。但是,这意味着我在每个 bin 中的频率分辨率为 30 Hz,这还不够窄。
是否可以对数据进行插值以获得更多数据样本?据我所知,将点数加倍将产生 88.2 kHz 的采样率,但仍会产生 30 的频率分辨率。是否可以将插值数据视为仍然具有 44.1 kHz 的采样率?
(非常)简短的回答是否定的,插值不会增加分辨率:没有新数据,没有新信息(请注意,严格来说,根据该术语的常见定义,“分辨率”的使用是不合适的。另请查看hotpaw2,还有他的回答)。
更长的答案需要以下频谱可视化(从左到右的时域、连续频域和离散频域)。为了简单起见,我假设没有别名。
插值技术保留了频谱的信息。DFT 的输出是一组从到的频率区间。
首先,看连续频域,如果你正确地对信号进行上采样,就相当于提高了采样频率。您希望数据数量增加一倍,但它只是删除了采样过程的频谱副本的一半。
现在,看看离散频域。这个版本从标准化到。当加倍时,频谱会缩小倍。如果我们称为上采样前非零频率的比例,上采样后变为。在上采样之前,DFT个 bin,然后个 bin;上采样后然后$相同光谱的分档。不,您的分辨率根本没有改变。
要获得“更好”的分辨率,唯一的方法是添加更多数据。在您的示例中,不是划分为 30 帧,而是将您的音频文件划分为 15 帧。
“插值”基本上包括两个步骤。第一种是在时域中具有插值函数的卷积,对应于频域中的简单乘法。第二个是在时域中以更高的密度重新采样。如果您的总变换窗口在时域中保持相同的时间跨度,则频域中 bin 的频率间隔不会改变,您只会得到更多。如果您的插值函数在作为低通滤波器方面做得很好,那么额外的 bin 将大部分为零。如果您的插值函数在作为低通滤波器方面做得不好,那么额外的 bin 将主要是无意义的。
所以基本上如果你想提高你的频率分辨率,这样做的方法是增加你的变换窗口长度。当然,这是以您跟踪不断变化的信号特征的时间分辨率为代价的。
当被视为二次测量时,时间和频率分辨率的整体权衡最适合时间和频率空间中的高斯,这意味着为了获得最佳分辨率,每个频率都需要在时域中具有自己的窗口函数。
这导致正交镜像滤波器和小波变换作为更接近理论时间/频率分辨率权衡(这是与 Heisenbergsche Unschärferelation 相关的硬数学限制)的手段,而不是 STFT 可以同时失去一些可解释性。
TLDR:为了获得更好的频率分辨率,您需要更长的时间窗口。插值不会为您提供更好的分辨率,它可能只是通过将奈奎斯特频率推离相关的非零 bin 更远来获得更好的 bin。这不会添加信息,但可能会使现有信息在频率内容的上限范围内更易于解释和操作。
频域插值不会增加峰值分离分辨率,也不会增加“信息”,但如果信噪比足够高,它可以提高频率估计分辨率。
您可以通过 Sinc 内核插值(可能是加窗的)或使用更长的零填充 FFT 对 FFT 结果进行插值,这两种方法都会产生相似的结果。与使用低得多的分辨率相比,通过插值或零填充 FFT 生成的结果点密度越大,绘图点更接近某个随机孤立谱峰的概率增加,因此可能会减少最近绘图点频率估计错误。
正如 AlexTP 等其他人指出的那样,插值不会给你更好的频率分辨率。如果 Fs 是您的采样频率,N 是信号中的样本数,则 bin 的大小以及频率分辨率将为 Fs/N。如果您将信号/音频分成 30 段,频率分辨率将降低 30 倍,我猜这是您的问题。根据不确定性原理,所需的时间分辨率越高,频率分辨率必须越低。根据您正在尝试做什么,您可以查找 STFT 和小波变换作为 FFT/DFT 的替代方案。