采样定理在音乐上的应用
人可以听到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$
我们知道频域上的带宽是$-Bleqslant s leqslant B$这种形式,但是这里为了方便后面的推导,采用了上方的这种形式
实际上这两个假设并不能同时成立,因此称之为抽样定理的误用。
1. $f(t)$的离散近似
为了得到一个$f(t)$的离散近似,这里需要以$frac{1}{2B}$的间隔进行采样
设$f(t)$内共有$N$个采样点,即$Ncdot 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^{-2pi ist_k} }$
为了离散化$mathcal{F}f_{sample}(s)$,我们需要在频域进行采样。关于采样,信号的采样频率是依据该信号在另一个域的性质决定的,我们在时域采样时依据它在频域受限于$0~2B$,而在频域采样是依据它在时域受限于$0~L$,即采样间隔为$frac{1}{L}$。
设共有$M$个采样点,即
$Mcdot 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)$进行采样
$egin{align*}
left(mathcal{F}f_{sample}
ight)_{sample}(s)
&= left(mathcal{F}f_{sample}(s)
ight )cdot sum_{m=0}^{N-1}delta(s-s_m)\
&= left(sum_{k=0}^{N-1}f(t_k)e^{-2pi ist_k}
ight )cdotleft( sum_{m=0}^{N-1}delta(s-s_m)
ight )\
&= sum_{k,m=0}^{N-1}f(t_k)e^{-2pi is_mt_k}delta(s-s_m)
end{align*}$
频域上的采样值为
$egin{align*}
F(s_0) &= displaystyle{ sum_{k=0}^{N-1}f(t_k)e^{-2pi i s_0t_k} }\
F(s_1) &= displaystyle{ sum_{k=0}^{N-1}f(t_k)e^{-2pi i s_1t_k} }\
vdots\
F(s_{N-1}) &= displaystyle{ sum_{k=0}^{N-1}f(t_k)e^{-2pi 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^{-2pi 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] ight)$
2) 令$underline{F}[m] = F(s_m)$
即,有离散信号的离散傅里叶变换$underline{F} = left( underline{F}[0],underline{F}[1],…,underline{F}[N-1] ight)$
3) $s_mt_k = frac{m}{L}cdotfrac{k}{2B} = frac{mk}{2BL} = frac{mk}{N}$
即,$underline{F}[m] = displaystyle{ sum_{k=0}^{N-1}underline{f}[k]e^{-2pi ifrac{mk}{N}} }$
离散傅里叶变换
根据上述推导得出结论
- 设有离散信号$underline{f} = left( underline{f}[0],underline{f}[1],…,underline{f}[N-1] ight)$,它的DFT(离散傅里叶变换)为$underline{F}=left( underline{F}[0],underline{F}[1],…,underline{F}[N-1] ight)$,有
$underline{F}[m] = displaystyle{ sum_{k=0}^{N-1}underline{f}[k]e^{-2pi ifrac{mk}{N}} }$