对技术执着
分类:
2015-03-14 17:09:20
:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://kware.blogbus.com/logs/30705261.html
1. 基本公式
图3展示了 Rothweiler 建议的 MPEG 音频编码过滤器组是怎样的结构,作为比较,图4 则展示了同样的 ISO
MPEG音频标准的过滤器组的流程图。
通过结合等式和流程图中的步骤,人们便会推出如下过滤器组输出的公式:
St[i] = Sum(k=0..63, Sum(j=0..7, M[i][k] * (C[k+64j] * x[k+64j])) (1)
其中:
i 是子带编号,范围从 0 到 31;
st[i] 是第 i 个过滤器在时间 t 时样条输出值, t 是一个 32 个音频样条的间隔的整数倍;
C[n] 是标准中定义的分析窗口的 512 个系数之一;
x[n] 是音频输入样条值,而
M[i][k] = cos[(2*i+1)*(k-16)*pi/64] 是分析系数矩阵;
2. 算法分析
以上等式已进行部分优化以减少计算的数量。因为括号内的函数与 i 值无关, 而 M[i][k] 与 j 无关,因此
32 过滤器组实际上只需要 512 + 32*64 = 2,560 次乘法和 64*7+32*63 = 2,464 次加法, 大致每个滤波器
输出需要 80 次乘法和加法。进一步充分的简化还是可能的,如快速 FDCT[9,10] 或 FFT[11]。
注意:该过滤器组实施是紧急采样的,每 32 个输入样条,过滤器组产生 32 个输出样条。实际上,32个子带
滤波器中的每一个都子采样它的输出(by 32)以对每 32 个新的音频采样仅产生一个输出样条。
3. 算法卷绕形式与分析
人们可从 (1) 式转化为熟知的过滤器卷绕等式:
St[i] = Sum(n=0..511, x[t-n]*Hi[n]) (2)
其中:
x[t] 是时间 t 的音频采样数据,而:
Hi[n] = h[n]*cos[(2*i+1)*(n-16)*pi/64],其中:
h[n] = -C[n], 如果 (n/64) 的整数部分是奇数,
= C[n] 否则,n = 0 to 511。
在这种形式中,每个子带有它自己的带通(band-pass)滤波响应 Hi[n], 尽管该种形式分析起来容易一些,很
显然它不是一个有效率的方案:该形式的直接实施需要 32 * 512 = 16,384 次乘法和 32* 511 = 16,352 次
加法才能计算出 32 个滤波器的输出。