\[
\newcommand{\bs}{\boldsymbol}
\newcommand{\bsX}{\boldsymbol{X}}
\newcommand{\bf}{\mathbf}
\newcommand{\msc}{\mathscr}
\newcommand{\mca}{\mathcal}
\newcommand{\T}{\text{T}}
\newcommand{\rme}{\mathrm{e}}
\newcommand{\rmi}{\mathrm{i}}
\newcommand{\rmj}{\mathrm{j}}
\newcommand{\rmd}{\mathrm{d}}
\newcommand{\rmm}{\mathrm{m}}
\newcommand{\rmb}{\mathrm{b}}
\newcommand{\and}{\land}
\newcommand{\or}{\lor}
\newcommand{\exist}{\exists}
\newcommand{\sube}{\subseteq}
\newcommand{\lr}[3]{\left#1 #2 \right#3}
\newcommand{\intfy}{\int_{-\infty}^{+\infty}}
\newcommand{\sumfy}[1]{\sum_{#1=-\infty}^{+\infty}}
\newcommand{\vt}{\vartheta}
\newcommand{\ve}{\varepsilon}
\newcommand{\vp}{\varphi}
\newcommand{\Var}{\text{Var}}
\newcommand{\Cov}{\text{Cov}}
\newcommand{\edef}{\xlongequal{def}}
\newcommand{\prob}{\text{P}}
\newcommand{\Exp}{\text{E}}
\newcommand{\t}[1]{\text#1}
\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}}
\newcommand{\versionofnewcommand}{\text{260125}}
\]
Digital Processing of Analog Signals
对于模拟信号, 我们只能做近似, 而且近似的结果也取决于所用元件的性质限制. 但对于数字处理, 我们的精度是可以做到非常高的. 毕竟, 数字仅存在于我们的想象, 而不像现实那样有诸多限制. 因此, 有机会做数字处理, 就不大会想做模拟处理.
如果有个模拟信号 \(x_a(t)\), 我们想用数字处理, 一般分为如下三步:
- 模拟数字转换 A/D, 输出数字信号 \(x(n)\).
- 将这个数字信号通过系统 \(H\) 处理
- 数字模拟转换 D/A, 输出处理后的数字信号 \(y_a(t)\)
大部分电子设备都是这样做的. 音频处理中各种加混响, 突出人声, 加重低音等等都是在数字端进行处理.
Sampling and Holding 采样-保持
A/D 可以说是核心技术, 我们很难一时半会讲明白. 这里只能介绍一下基本观念.
几乎所有的 A/D 用的都是采样-保持技术. 它的输出本质上也是个模拟信号. 暂且把 "保持" 的过程描绘成一个简单的滤波器, "采样" 则是由一个时钟驱动:
\[
\begin{aligned}
x_s(t)=&h(t)* \left(\sum_{k=-\infty}^{+\infty}x_a(kT)\delta(t-kT)\right)\\
=&\sum_{k=-\infty}^{+\infty}x_a(kT)\cdot h(t-kT)
\end{aligned}
\]
理想中的保持 (当然, 是简化版)
\[
h_0(t)=\begin{cases}
1,& |t|<c_n\\ 0,& others
\end{cases}
\]
Over Sampling 过采样
接下来解决一个问题, 当 input 不是带限的, 我们该怎么办呢? 事实上, 在很多情况下, 信号是近似带限的, 比如非常常见地仅仅是具有高频噪声. 这样, 我们可以用一些技术手段, 让它变成真带限的. 例如, 用一个模拟的滤波器处理, 毕竟现在还没开始采样. 这样的滤波器, 我们称为 Anti-Aliasing Filter, 抗混叠的滤波器. 尽管采样的过程仍然会造成一些频谱上的混叠, 导致信噪比降低. (即, 数字处理会降低信噪比.) 但总归可以接受.
不过, 模拟滤波器是很难做的, 很难完完全全地去除高频噪声. 实践中, 需要用到 Over Sampling, 过采样 来改善信噪比降低的损失.
模拟滤波器低通滤波, 只有对远处的噪声才能有比较强的滤过效果, 当仅仅按照奈奎斯特搬移时, 重叠部分的噪声仍然会很大, 因此需要搬得更远一些, 即采样频率要更大一些, 即 "过采样", 这样才能弥补信噪比降低的损失.
停下来思考一下, 虽然远处的噪声没了, 但近处的还在, 怎么办? 实际上没问题! 搬移以后, 信号就变成数字的了, 直接用数字滤波就好.
Quantization 量化 / 量子化
数字信号不仅仅是指时间上离散, 还有取值上离散, 即只能用有限长度的 \(0\) 和 \(1\) 表达. 因此, 它的取值范围肯定不会是任意实数. 因此需要一个 量化 的过程. 显然, 这一过程一定伴随着误差. 业界最流行的刻画误差的方法如下:
假如量化噪声 / 量化误差为 \(e(n)\)
\[
x_a{(nT)}-x(n)=e(n)
\]
- \(e(n)\) 实际上是一串随机变量, 即该过程是个随机过程
- 给定 \(n\), \(e(n)\) 服从均匀分布 \(e(n)\sim U(-\frac{\Delta}{2},\frac{\Delta}{2})\), 从而概率密度
\[
f(x)=\frac{1}{\Delta}I_{(-\frac{\Delta}{2},\frac{\Delta}{2})}(x)
\]
- \(E(e(k)e(m))=0,\ k\neq m\). 即, 量化噪声是个白噪声.
这其实涉及一个重要思想: Randomization, 随机化. 一般思维中, 随机性是想要避免的. 但有时候, 随机的反而好.
首先解释一下 \(\Delta\) 是啥. 由于 \(x(n)\) 不可能和任意的实数 \(x_a(t)\) 一一对应, 因此假设 \(x_a(t)\) 每增长 \(\Delta\), 可以使 \(x(n)\) 变化一个值.
\[
\begin{aligned}
E(e(n)) &=\int_{-\infty}^{+\infty}xf(x)dx=\frac{1}{\Delta}\int_{-\frac{\Delta}{2}}^{\frac{\Delta}{2}}x\cdot 1\
dx=0\\
\text{Var}(e(n)) &=\int_{-\infty}^{+\infty}x^2f(x)dx=\frac{1}{\Delta}\int_{-\frac{\Delta}{2}}^{\frac{\Delta}{2}}x^2\cdot 1\ dx=\frac{\Delta^2}{12}
\end{aligned}
\]
我们当然希望方差越小越好, 也就意味着 \(\Delta\) 要尽量小. 这也就意味着 \(x(n)\) 要更精准地反映 \(x_a(t)\), 技术难度也就越强.
假定量化的位数 Quantizaton Bits 为 \(B\), 那么就把量程切为了 \(2^B\) 份, 于是 \(\Delta=2^{-B}\). 则方差
\[
\begin{aligned}
\text{Var}(e(n)) &=\frac{2^{-2B}}{12}\\
\Rightarrow 10\log\text{Var}(e(n)) &=10\log\frac{2^{-2B}}{12}\\
& =-20B\log2-10\log12\\
& =-6.02B-10.8
\end{aligned}
\]
\(-6.02B-10.8\) 是个重要的公式, 刻画了 A/D 量化步骤带来的误差, 该误差与量化位数有关. 差一位, 差六分贝.