采样定理在音乐上的应用
人可以听到20~20000Hz的声音,上限为20000Hz,即$\frac{p}{2} = 20000$,$p=40000$。那么采样率至少要为40000。CD的采样率采用44100(44.1kHz),据传,在采集模拟信号时采用44100,是因为这些采集的机器以该采样率设置时最为正常,而并非出于理论上的考虑。
在采样时,若采用低于40000的采样率,就会造成声音的高频部分混叠(alias),也有人把这个说成是“低频混叠了变为高频部分,而高频的部分被混叠为低频部分”,实际上是把频谱上左边部分的高频右移叠加到右边的高频上,而右边部分的高频也左移叠加到了左边的高频上,在上节课我们已经讨论过。这是采用低采样率会导致高频失真的原因。
从模拟到数字,从连续到离散
在前面我们讨论的都是连续的信号,在这节,我们将过渡到离散信号的学习。本节计划分为三个部分
$f(t)$为连续的信号,即$t$是一个连续变量
1) 找到一种合理的离散逼近$f(t)$的形式
2) 找到一种合理的离散的逼近$f(t)$的傅里叶变换$\mathcal{F}f(s)$的形式
3) 找到一种从$f$的离散形式到傅里叶变换$\mathcal{F}f$的离散形式的合理方法
下面的推导将建立在抽样定理的误用上
假设
$f(t)$受限于$0 \leqslant t \leqslant L$
$\mathcal{F}f(s)$受限于$0 \leqslant s \leqslant 2B$
我们知道频域上的带宽是$-B\leqslant s \leqslant B$这种形式,但是这里为了方便后面的推导,采用了上方的这种形式
实际上这两个假设并不能同时成立,因此称之为抽样定理的误用。
1. $f(t)$的离散近似
为了得到一个$f(t)$的离散近似,这里需要以$\frac{1}{2B}$的间隔进行采样
设$f(t)$内共有$N$个采样点,即$N\cdot \frac{1}{2B} = L\ ,\ N = 2BL$
令$t_0 = 0,t_1 = \frac{1}{2B},…,t_{N-1} = \frac{N-1}{2B}$
对$f(t)$进行采样,得
$f_{sample}(t) = \displaystyle{ f(t)\sum_{k=0}^{N-1}\delta(t-t_k) = \sum_{k=0}^{N-1}f(t_k)\delta(t-t_k)}$
采样得到的项分离出$f(t)$的离散近似为$f(t_0),f(t_1),…,f(t_{n-1})$
2. $\mathcal{F}f(s)$的离散近似
在经过上面的最后一步后,此时$t$仍然是一个连续变量,即$f_{sample}(t)$是连续的,对它进行傅里叶变换
$\mathcal{F}f_{sample}(s) = \displaystyle{\sum_{k=0}^{N-1}f(t_k)e^{-2\pi ist_k} }$
为了离散化$\mathcal{F}f_{sample}(s)$,我们需要在频域进行采样。关于采样,信号的采样频率是依据该信号在另一个域的性质决定的,我们在时域采样时依据它在频域受限于$0~2B$,而在频域采样是依据它在时域受限于$0~L$,即采样间隔为$\frac{1}{L}$。
设共有$M$个采样点,即
$M\cdot \frac{1}{L} = 2B \ , \ M=2BL=N$
即时域与频域的采样点数目是一样多的。
令$s_0=0,s_1=\frac{1}{L},…,s_{N-1} = \frac{N-1}{L}$
对$\mathcal{F}f_{sample}(s)$进行采样
$\begin{align*}
\left(\mathcal{F}f_{sample} \right)_{sample}(s)
&= \left(\mathcal{F}f_{sample}(s) \right )\cdot \sum_{m=0}^{N-1}\delta(s-s_m)\\
&= \left(\sum_{k=0}^{N-1}f(t_k)e^{-2\pi ist_k} \right )\cdot\left( \sum_{m=0}^{N-1}\delta(s-s_m)\right )\\
&= \sum_{k,m=0}^{N-1}f(t_k)e^{-2\pi is_mt_k}\delta(s-s_m)
\end{align*}$
频域上的采样值为
$\begin{align*}
F(s_0) &= \displaystyle{ \sum_{k=0}^{N-1}f(t_k)e^{-2\pi i s_0t_k} }\\
F(s_1) &= \displaystyle{ \sum_{k=0}^{N-1}f(t_k)e^{-2\pi i s_1t_k} }\\
\vdots\\
F(s_{N-1}) &= \displaystyle{ \sum_{k=0}^{N-1}f(t_k)e^{-2\pi i s_{N-1}t_k} }
\end{align*}$
以上就是$f$的离散形式的傅里叶变换的离散近似(That‘s the discrete approximation to the Fourier transform of the discrete version of f)
3. 从$f$的离散近似到$\mathcal{F}f$的离散近似
经过上面两个步骤,得到
$f(t)$被离散化为$f(t_0),f(t_1),…,f(t_{N-1})$
$\mathcal{F}f(s)$被离散化为$F(s_0),F(s_1),…,F(s_{N-1})$,有
$F(s_m) = \displaystyle{ \sum_{k=0}^{N-1}f(t_k)e^{-2\pi is_mt_k} }$
由于$f(t_k),F(s_m),t_k,s_m$都从连续信号延伸而来,现在我们需要把连续信号完全消除,只保留离散部分
1) 令$\underline{f}[k] = f(t_k)$
即,有离散信号$\underline{f} = \left( \underline{f}[0],\underline{f}[1],…,\underline{f}[N-1] \right)$
2) 令$\underline{F}[m] = F(s_m)$
即,有离散信号的离散傅里叶变换$\underline{F} = \left( \underline{F}[0],\underline{F}[1],…,\underline{F}[N-1] \right)$
3) $s_mt_k = \frac{m}{L}\cdot\frac{k}{2B} = \frac{mk}{2BL} = \frac{mk}{N}$
即,$\underline{F}[m] = \displaystyle{ \sum_{k=0}^{N-1}\underline{f}[k]e^{-2\pi i\frac{mk}{N}} }$
离散傅里叶变换
根据上述推导得出结论
- 设有离散信号$\underline{f} = \left( \underline{f}[0],\underline{f}[1],…,\underline{f}[N-1] \right)$,它的DFT(离散傅里叶变换)为$\underline{F}=\left( \underline{F}[0],\underline{F}[1],…,\underline{F}[N-1] \right)$,有
$\underline{F}[m] = \displaystyle{ \sum_{k=0}^{N-1}\underline{f}[k]e^{-2\pi i\frac{mk}{N}} }$