利用傅里叶级数分析声波
1. 分解声波为傅里叶级数
声音本质上是随时间变化的压力波,传播到我们的耳朵中被感知为声音。在数字音频系统里,声音通常以采样的形式存在,例如CD音频每秒会采用44,100个采样值。
周期性的声音波形能够产生明确的音符,而随机形状的波形听起来则像噪音。正弦和余弦函数是典型的周期函数,它们的图像呈现出平滑的曲线,被称为正弦曲线。正弦和余弦函数的周期是$2\pi$,频率是周期的倒数,即$1/(2\pi)$。形如$\sin(2n\pi t)$或$\cos(2n\pi t)$的函数频率为$n$,高频的声音波函数会产生高音调的音符。
我们的目标是将任意周期函数(如方波)表示为正弦函数的线性组合,也就是把任何声波分解为纯音符的组合。这类似于将向量表示为基向量的线性组合。在函数的向量空间中,我们可以把方波等函数看作感兴趣的向量,而$\sin(2\pi t)$、$\sin(4\pi t)$、$\sin(6\pi t)$等函数则构成了基。
例如,方波在$\sin(2\pi t)$方向上的分量长度为$4/\pi$,在$\sin(6\pi t)$方向上的分量长度为$4/(3\pi)$。我们可以编写一个 fourier_coefficients(f, N) 函数来计算周期为1的函数$f$的傅里叶系数,该函数会返回常数项系数$a_0$,以及一系列的余弦系数$a_n$和正弦系数$b_n$。
def fourier_coefficients(f,N):
a0 = inner_product(f,const)
an = [inner_prod
超级会员免费看
订阅专栏 解锁全文
1875

被折叠的 条评论
为什么被折叠?



