了解 DCT 的输出
Understanding the output of a DCT
我无法理解离散余弦变换的输出。
背景:
我想通过仅保存 DCT 最相关的频率来实现简单的音频压缩。为了比较笼统,我会把几个音轨切成固定大小的片段,比如 5 秒。
然后我会对每个样本进行 DCT,找出所有短片段中最重要的频率。
然而这不起作用,这可能是由于我对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 and this 有所帮助),但显然这还不够。
我自己想出来了。它确实写在我在问题中发布的 link 中。对应于某个 bin_id 的频率由 (bin_id * freq/2) / (N/2) 给出。这基本上可以归结为 bin_id*1/t,其中 N=freq*t。这意味着这些图只是具有不同的粒度。因此,如果 plot#1 在位置 x 处有一个高点,plot#2 可能会在 x/4 处显示一个高点,而 plot#3 可能会在 x*2
处显示一个高点
下图显示 plot#1 的数据被拉伸到两倍大小(蓝色),plot#3 的数据为黄色
我无法理解离散余弦变换的输出。 背景: 我想通过仅保存 DCT 最相关的频率来实现简单的音频压缩。为了比较笼统,我会把几个音轨切成固定大小的片段,比如 5 秒。 然后我会对每个样本进行 DCT,找出所有短片段中最重要的频率。
然而这不起作用,这可能是由于我对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 and this 有所帮助),但显然这还不够。
我自己想出来了。它确实写在我在问题中发布的 link 中。对应于某个 bin_id 的频率由 (bin_id * freq/2) / (N/2) 给出。这基本上可以归结为 bin_id*1/t,其中 N=freq*t。这意味着这些图只是具有不同的粒度。因此,如果 plot#1 在位置 x 处有一个高点,plot#2 可能会在 x/4 处显示一个高点,而 plot#3 可能会在 x*2
处显示一个高点下图显示 plot#1 的数据被拉伸到两倍大小(蓝色),plot#3 的数据为黄色