跳转至
\[ \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)\), 我们想用数字处理, 一般分为如下三步:

  1. 模拟数字转换 A/D, 输出数字信号 \(x(n)\).
  2. 将这个数字信号通过系统 \(H\) 处理
  3. 数字模拟转换 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) \]
  1. \(e(n)\) 实际上是一串随机变量, 即该过程是个随机过程
  2. 给定 \(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) \]
  1. \(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 量化步骤带来的误差, 该误差与量化位数有关. 差一位, 差六分贝.