【发布时间】:2018-09-22 13:48:25
【问题描述】:
我无法理解离散余弦变换的输出。 背景: 我想通过仅保存 DCT 最相关的频率来实现简单的音频压缩。为了有点笼统,我会将几个音轨切割成固定大小的片段,比如 5 秒。 然后我会对每个样本进行 DCT,找出所有短 sn-ps 中最重要的频率。
但是这不起作用,这可能是由于我对 DCT 的误解。例如,请参见下面的图片:
第一张图片显示了音轨前 40 秒的 DCT(希望让它足够长,以便获得良好的频率混合)。 第二张图片显示了前十秒的 DCT。 第三张图片显示了前 40 秒的反向连接(如 abc->abccba)的 DCT 我在 2e5 处添加了一个垂直标记以进行比较。音乐的采样率是通常的 44.1 khz
所以这是我的问题:
与 DCT 输出矢量的单个值对应的频率是多少?是 bin/2 吗?就像我在 bin=10000 有一个尖峰,这对应于现实世界中的哪个频率?
为什么第一张图显示的振幅比第二张多很多?我的直觉是 DCT 将产生高达 44.l khz 的所有频率的值(如果我在 #1 中的假设是正确的,那么 bin 编号为 88.2k),只是尖峰的规模会有所不同,这将弥补音乐的不同。
为什么第三个图比第一个图显示了更多频率的强振幅?我认为通过连接数据,我不会得到任何新的频率。
由于 DCT 和 FFT/DFT 非常相似,我尝试了解有关 ft 的更多信息(this 和 this 帮助),但显然还不够。
【问题讨论】: