多速率信号处理
前言
数字信号处理的许多实际应用中,往往需要改变信号的采样率。例如,在发送和传送不同类型信号(如电传打字、电报、传真、语音、视频等)的电信系统中,需要以与信号带宽成比例的不同速率来处理各种信号。将信号从一给定速率转换到另一不同速率的过程称为采样率转换。相应地,应用多种采样率进行数字信号处理的系统称为多速率数字信号处理系统。
数字信号的采样率转换有两种通用方法:
(1)将数字信号通过一个D/A转换器转换为模拟信号(如果有需要就加上滤波),然后按所希望的速率对所得到的模拟信号重新采样。
(2)完全在数字域实现采样率转换。
第一种方法明显的优点是可以任意选取新的采样率并且与旧的采样率没有任何特殊关系,主要缺点是信号重构时D/A转换器会引人信号失真,并且AD转换过程中的量化效应也会引人信号失真。而完全在数字域实现采样率转换就避免了这一缺点。
1. 通过内插函数进行采样率转换
采样率转换过程可理解为 “重构后重新采样”:离散信号通过信号重建得到连续时间信号,然后通过所需的采样率对连续时间信号重新采样获得所需采样率的离散信号。
假设以
F
x
=
1
/
T
x
F_x=1/T_x
Fx=1/Tx 的采样率对连续时间信号
x
(
t
)
x(t)
x(t) 进行采样可得到离散时间信号
x
(
n
T
x
)
x(nT_x)
x(nTx),则理论上可利用内插函数通过离散时间信号
x
(
n
T
x
)
x(nT_x)
x(nTx) 无损恢复原连续时间信号
x
(
t
)
x(t)
x(t)。内插函数可以表示为:
g
(
t
)
=
s
i
n
(
π
t
/
T
x
)
π
t
/
T
x
g(t) = \frac{sin(\pi t/T_x)}{\pi t/T_x}
g(t)=πt/Txsin(πt/Tx)
该内插函数的傅里叶变化为:
G
(
F
)
=
{
T
x
,
∣
F
∣
≤
F
x
/
2
0
,
其他
G(F)=\begin{cases}T_x,\quad |F|\leq F_x/2\\0,\qquad 其他\end{cases}
G(F)={Tx,∣F∣≤Fx/20,其他
如果原连续时间信号
x
(
t
)
x(t)
x(t) 的带宽小于
F
x
/
2
F_x/2
Fx/2,那么可以得到
x
(
t
)
=
∑
n
=
−
∞
∞
x
(
n
T
x
)
g
(
t
−
n
T
x
)
x(t)=\sum\limits_{n=-\infty}^\infty x(nT_x)g(t-nT_x)
x(t)=n=−∞∑∞x(nTx)g(t−nTx)
注:实际中
x
(
t
)
x(t)
x(t)的完全恢复是不可能的,因为式(3)中的无限求和会被有限求和取代。
假设所需信号采样率为
F
y
=
1
/
T
y
F_y=1/T_y
Fy=1/Ty,那么新采样率下的离散时间信号可表示为:
x
(
m
T
1
)
=
∑
n
=
−
∞
∞
x
(
n
T
x
)
g
(
m
T
y
−
n
T
x
)
x(mT_1)=\sum\limits_{n=-\infty}^\infty x(nT_x)g(mT_y-nT_x)
x(mT1)=n=−∞∑∞x(nTx)g(mTy−nTx)
式(4)是采样率转换的通用公式,可直接利用原始序列样本和重构函数在 ( m T y − n T x ) (mT_y-nT_x) (mTy−nTx)处的采样值表示出所期望序列的样本。
F y > F x F_y>F_x Fy>Fx 时,通过式(4)计算的 x ( m T y ) x(mT_y) x(mTy) 是准确的; F y < F x F_y<F_x Fy<Fx 时,在进行重采样前,需要先滤除信号 x ( t ) x(t) x(t) 中高于 F y / 2 F_y/2 Fy/2 的频率成分以避免频谱混叠。
2. 信号的抽取(下采样)
假设以整数因子
D
D
D 对离散信号
x
(
n
)
x(n)
x(n) 进行下采样。若简单地在
x
(
n
)
x(n)
x(n) 中通过每 D 个值取一个值作为下采样后的序列,那么得到的信号会出现频谱混叠,发生频谱混叠的临界频率为
F
x
/
2
D
F_x/2D
Fx/2D。为避免频谱混叠,可以先通过低通滤波将信号带宽限制在
F
x
/
2
D
F_x/2D
Fx/2D 以内,然后再对滤波后的信号每
D
D
D 个值取一个值得到降采样后的信号序列
y
(
m
)
y(m)
y(m)。
假设抗混叠低通滤波器的单位脉冲响应为
h
(
n
)
h(n)
h(n),则低通滤波后的信号为:
v
(
n
)
=
∑
k
=
0
∞
h
(
k
)
x
(
n
−
k
)
v(n)=\sum\limits_{k=0}^\infty h(k)x(n-k)
v(n)=k=0∑∞h(k)x(n−k)
以因子
D
D
D 对信号
v
(
n
)
v(n)
v(n) 进行抽取,得到降采样后的序列
y
(
m
)
y(m)
y(m):
y
(
m
)
=
v
(
m
D
)
=
∑
k
=
0
∞
h
(
k
)
x
(
m
D
−
k
)
y(m)=v(mD)=\sum\limits_{k=0}^\infty h(k)x(mD-k)
y(m)=v(mD)=k=0∑∞h(k)x(mD−k)
抗混叠滤波是线性时不变的,但信号的抽取是时变的。抗混叠滤波将信号带宽限制在
F
x
/
2
D
F_x/2D
Fx/2D 以内,信号的抽取在频域上展现为以
F
x
/
D
F_x/D
Fx/D 的频率间隔对信号
v
(
n
)
v(n)
v(n) 的频谱进行周期延拓。
3. 信号的插值(上采样)
将采样率增加到
I
I
I 倍可以通过在信号的两个连续值之间内插
I
−
1
I-1
I−1 个样本来实现。假设原信号是采样率为
F
x
F_x
Fx的序列
x
(
n
)
x(n)
x(n),
v
(
m
)
v(m)
v(m) 是采样率为
F
y
=
I
F
x
F_y=IF_x
Fy=IFx的序列,可通过在
x
(
n
)
x(n)
x(n) 的两个连续值之间插入
I
−
1
I-1
I−1 个零得到。则
v
(
m
)
=
{
x
(
m
/
I
)
,
m
=
0
,
±
I
,
±
2
I
,
⋯
0
,
其他
v(m)=\begin{cases}x(m/I),\quad m=0,\pm I,\pm 2I,\cdots\\0,\quad\quad\quad\;\;\, 其他\end{cases}
v(m)={x(m/I),m=0,±I,±2I,⋯0,其他
序列
v
(
m
)
v(m)
v(m) 的
z
z
z 变换为
V
(
z
)
=
∑
m
=
−
∞
∞
v
(
m
)
z
−
m
=
∑
m
=
−
∞
∞
x
(
m
)
z
−
m
I
=
X
(
z
I
)
V(z)=\sum\limits_{m=-\infty}^\infty v(m)z^{-m}=\sum\limits_{m=-\infty}^\infty x(m)z^{-mI}=X(z^I)
V(z)=m=−∞∑∞v(m)z−m=m=−∞∑∞x(m)z−mI=X(zI)
v
(
m
)
v(m)
v(m) 的频谱
V
(
ω
y
)
V(\omega_y)
V(ωy) 与
x
(
n
)
x(n)
x(n) 的频谱
X
(
ω
x
)
X(\omega_x)
X(ωx) 存在如下关系:
V
(
ω
y
)
=
X
(
ω
y
I
)
V(\omega_y)=X(\omega_yI)
V(ωy)=X(ωyI)
所以,
ω
x
=
ω
y
I
\omega_x=\omega_yI
ωx=ωyI,即
ω
y
=
ω
x
I
\omega_y=\frac{\omega_x}{I}
ωy=Iωx
通过在
x
(
n
)
x(n)
x(n) 的两个连续值之间插入
I
−
1
I-1
I−1个零,实现采样率增加所得到的信号,其谱
V
(
ω
)
V(\omega)
V(ω) 是输入信号的谱
X
(
ω
)
X(\omega)
X(ω) 的
I
I
I 次周期性重复。
x
(
n
)
x(n)
x(n) 在区间
0
≤
ω
y
≤
π
/
I
0\leq\omega_y\leq\pi/I
0≤ωy≤π/I 内的频率分量是唯一的,所以需要滤除频谱中高于频率
ω
y
=
π
/
I
\omega_y=\pi/I
ωy=π/I 的镜像,即序列
v
(
m
)
v(m)
v(m) 需通过频率响应为
H
I
(
ω
y
)
H_I(\omega_y)
HI(ωy) 的低通滤波器:
H
I
(
ω
y
)
=
{
C
,
0
≤
∣
ω
y
∣
≤
π
/
I
0
,
其他
H_I(\omega_y)=\begin{cases}C,\quad 0\leq|\omega_y|\leq\pi/I\\0,\,\quad 其他\end{cases}
HI(ωy)={C,0≤∣ωy∣≤π/I0,其他
其中,
C
C
C 是适当归一化输出序列
y
(
m
)
y(m)
y(m) 的缩放因子。因此,输出谱为
Y
(
ω
y
)
=
{
C
X
(
ω
y
I
)
,
0
≤
∣
ω
y
∣
≤
π
/
I
0
,
其他
Y(\omega_y)=\begin{cases}CX(\omega_yI),\quad 0\leq|\omega_y|\leq\pi/I\\0,\,\,\qquad\qquad 其他\end{cases}
Y(ωy)={CX(ωyI),0≤∣ωy∣≤π/I0,其他
缩放因子 C需要使输出 y ( m ) = x ( m / I ) , m = 0 , ± I , ± 2 I , ⋯ y(m)=x(m/I),\,m=0,\pm I,\pm 2I,\cdots y(m)=x(m/I),m=0,±I,±2I,⋯。由于
y ( 0 ) = 1 2 π ∫ − π π Y ( ω y ) d ω y = C 2 π ∫ − π / I π / I X ( ω y I ) d ω y = C I 1 2 π ∫ − π / I π / I X ( ω x ) d ω x = C I x ( 0 ) \begin{aligned} y(0)&=\frac{1}{2\pi}\int_{-\pi}^\pi Y(\omega_y)d\omega_y\\ &=\frac{C}{2\pi}\int_{-\pi/I}^{\pi/I}X(\omega_yI)d\omega_y\\ &=\frac{C}{I}\frac{1}{2\pi}\int_{-\pi/I}^{\pi/I}X(\omega_x)d\omega_x\\ &=\frac{C}{I}x(0) \end{aligned} y(0)=2π1∫−ππY(ωy)dωy=2πC∫−π/Iπ/IX(ωyI)dωy=IC2π1∫−π/Iπ/IX(ωx)dωx=ICx(0)
若 y ( m ) = x ( m / I ) , m = 0 , ± I , ± 2 I , ⋯ y(m)=x(m/I),\,m=0,\pm I,\pm 2I,\cdots y(m)=x(m/I),m=0,±I,±2I,⋯,则 y ( 0 ) = x ( 0 ) y(0)=x(0) y(0)=x(0),即 C = I C=I C=I。
4. 以有理因子 I / D I/D I/D 转换采样率
信号的抽取和内插是信号采样率转换的两种特殊情况。对于采样率转换的一般情况,一般需要先以因子 I I I 内插,然后以因子 D D D 抽取内插器的输出。即,通过内插器和抽取器的级联可以实现以有理因子 I / D I/D I/D 进行采样率转换。
先内插后抽取的目的是保持
x
(
n
)
x(n)
x(n) 的期望频率特性。以上图中的方法进行采样率转换,低通滤波器
h
u
(
k
)
h_u(k)
hu(k) 和
h
d
(
k
)
h_d(k)
hd(k) 可以在相同的采样滤
I
F
x
IF_x
IFx 下工作,因此两个低通滤波器可以组合成下图中冲激响应为
h
(
k
)
h(k)
h(k) 的低通滤波器。该低通滤波器的频率响应
H
(
ω
v
)
H(\omega_v)
H(ωv) 的理想频率特性为:
H
(
ω
v
)
=
{
I
,
0
≤
∣
ω
v
∣
≤
m
i
n
{
π
D
,
π
I
}
0
,
其他
H(\omega_v)=\begin{cases}I,\quad 0\leq |\omega_v|\leq min\{\dfrac{\pi}{D},\dfrac{\pi}{I}\}\\0,\quad 其他\end{cases}
H(ωv)={I,0≤∣ωv∣≤min{Dπ,Iπ}0,其他
其中,
ω
v
=
2
π
F
F
v
=
2
π
F
I
F
x
=
ω
x
I
\omega_v=\dfrac{2\pi F}{F_v}= \dfrac{2\pi F}{IF_x}=\dfrac{\omega_x}{I}
ωv=Fv2πF=IFx2πF=Iωx。
5. 采样率转换的实现
5.1 多相滤波结构
多相滤波器基于如下事实:任何系统函数都可以分解为:
H
(
z
)
=
∑
i
=
0
M
−
1
z
−
i
P
i
(
z
M
)
H(z)=\sum\limits_{i=0}^{M-1}z^{-i}P_i(z^M)
H(z)=i=0∑M−1z−iPi(zM)
其中,
P
i
(
z
)
=
∑
n
=
−
∞
∞
h
(
n
M
+
i
)
z
−
n
P_i(z)=\sum\limits_{n=-\infty}^\infty h(nM+i)z^{-n}
Pi(z)=n=−∞∑∞h(nM+i)z−n
式(15)称为M分量多相分解,
P
i
(
z
)
P_i(z)
Pi(z) 是
H
(
z
)
H(z)
H(z) 的多相分量。每个子序列
p
i
(
n
)
=
h
(
n
M
+
i
)
,
i
=
0
,
1
,
⋯
,
M
−
1
p_i(n)=h(nM+i),\quad i=0,1,\cdots,M-1
pi(n)=h(nM+i),i=0,1,⋯,M−1
都是由下采样原冲激响应的延迟(“相移”)形式得到的。
5.2 滤波器与下采样器/上采样器的位置互换
一般情况下,下采样之前或者上采样后需要进行低通滤波操作,但下采样之前或上采样之后的数据量比较大,这个时候进行低通滤波会有较大的计算量。为了降低滤波操作的计算量,可以适当修改滤波器的系统函数后,交换下采样器/上采样器与低通滤波器的位置。下面是等效下采样和等效上采样的系统结构框图。
5.3 使用级联积分梳状滤波器转换采样率
级联积分梳状(
C
I
C
CIC
CIC)滤波器的一种常见系统函数为:
H
(
z
)
=
∑
k
=
0
M
−
1
z
−
k
=
1
−
z
−
M
1
−
z
−
1
H(z)=\sum\limits_{k=0}^{M-1}z^{-k}=\frac{1-z^{-M}}{1-z^{-1}}
H(z)=k=0∑M−1z−k=1−z−11−z−M
该系统函数是通过级联积分器
1
1
−
z
−
1
\dfrac{1}{1-z^{-1}}
1−z−11 的梳状滤波器
(
1
−
z
−
M
)
(1-z^{-M})
(1−z−M) 来实现的。
C
I
C
CIC
CIC 结构不需要对滤波器系数进行任何操作或存储。
为获取高效的抽取结构,首先在
C
I
C
CIC
CIC 滤波器的后面接下采样器,接着应用第一稀有恒等式。
为获取高效的内插结构,首先在上采样器后面接上
C
I
C
CIC
CIC 滤波器,再应用第二稀有恒等式。
为了改进采样率转换的低通频率响应,可以级联 K K K 级 C I C CIC CIC 滤波器。这种情况下,可将所有的积分器安排在滤波器的一边,而梳状滤波器在另一边,然后同单级情形那样应用第一稀有恒等式。
积分器 1 1 − z − 1 \dfrac{1}{1-z^{-1}} 1−z−11是非稳定系统,因此,其输出可能会无限制地增大,当积分器部分先出现时(如抽取结构),会导致溢出。但是,如果整个滤波器是用两个互补的固定点结构实现的,则该溢出是可容忍的。如果 D ≠ M D≠M D=M 或 I ≠ M I≠M I=M,则图 11.5.5 ( a ) 11.5.5(a) 11.5.5(a) 和 11.5.6 ( b ) 11.5.6(b) 11.5.6(b) 中的梳状滤波器 1 − z − 1 1-z^{-1} 1−z−1 需要分别用 1 − z − M / D 1-z^{-M/D} 1−z−M/D 或 1 − z − M / I 1-z^{-M/I} 1−z−M/I 取代。
CIC滤波器是频率采样结构的特殊情况。
如果
C
I
C
CIC
CIC 滤波器的阶数为2的整次幂,即
M
=
2
K
M=2^K
M=2K,式(18)可以分解为
H
(
z
)
=
(
1
+
z
−
1
)
(
1
+
z
−
2
)
(
1
+
z
4
)
⋯
(
1
+
z
−
2
K
−
1
)
H(z)=(1+z^{-1})(1+z^{-2})(1+z^{4})\cdots(1+z^{-2^{K-1}})
H(z)=(1+z−1)(1+z−2)(1+z4)⋯(1+z−2K−1)
根据这种分解,我们可以用非递归
C
I
C
CIC
CIC 滤波器生成抽取器结构。下图所示为
D
=
M
=
8
D=M=8
D=M=8 时的抽取器实现的例子。
5.4 用于抽取和内插滤波器的多相结构
(1)用于抽取滤波器的多相结构
抽取系统的一般结构如下图所示:
通过将输人序列
x
(
n
)
x(n)
x(n) 经过线性滤波器,再对滤波器输出以因子
D
D
D 下采样,即可得到抽取序列。这种情况下,滤波器以高采样率
F
x
F_x
Fx 工作,但是实际上每
D
D
D 个输出中只有一个是需要的。一种合理的方案是找到一个仅仅对所需要样本计算的结构。为此,可以通过如下图(a)所示的多相结构实现抽取。
根据第一稀有恒等式,可以将图(a)所示的抽取系统转换为图(b)所示的抽取系统。图(b)中的抽取系统滤波器工作在低采样率
F
x
/
D
F_x/D
Fx/D 下,因此可以降低计算量。如果使用的滤波器为线性相位
F
I
R
FIR
FIR 滤波器,利用其单位冲激响应的对称性,可进一步降低计算量。
(2)用于内插滤波器的多相结构
内插系统的一般结构如下图所示:
该系统滤波器操作在插零后进行,滤波器工作在高采样率 I F x IF_x IFx 下。为了使滤波操作在低采样率 F x F_x Fx 下运行,首先通过如下图图(a)所示的多相结构实现内插系统。
然后通过第二稀有恒等式将图(a)中的内插系统转换为图(b)所示的结构,图(b)中滤波操作在插零之前,从而降低计算量。
从图(b)中可以看出,序列 x ( n ) x(n) x(n) 分别输入多个多相子滤波器,滤波后的序列插零后延迟相加。虽然结构上显示的是相加,但由于序列中插入的零值,实际上相当于三个序列插值之前的序列值依次组合而成(如下图所示)。
6. 采样率转换的多级实现
在采样率转换的实际应用中,会经常遇到比1大很多的抽取因子和内插因子。但是,一般实现这样的采样率转换需要大量的多相滤波器,需要存储大量滤波器系数,存储效率低下。
例如,假设以因子 I / D = 130 / 63 I/D=130/63 I/D=130/63 改变采样率,虽然理论上可以准确实现该采样率转换,但实现该采样率转换需要130个多相滤波器,且计算上可能是低效的。
为了有效实现
I
>
>
1
I>>1
I>>1 的内插,可以将
I
I
I 分解成多个正整数的积:
I
=
∏
i
=
1
L
I
i
I=\prod\limits_{i=1}^L I_i
I=i=1∏LIi
这样即可通过级联
L
L
L 级的内插和滤波实现以因子
I
I
I 内插,如下图所示。
注:内插器的每个滤波器都消除了对应内插器上采样过程引入的镜像。
同理,以因子
D
D
D 抽取可以通过级联
J
J
J 级的滤波和抽取实现,如下图所示,其中因子
D
D
D 可以分解为多个正整数的积:
D
=
∏
i
=
1
J
D
i
D = \prod\limits_{i=1}^J D_i
D=i=1∏JDi
7. 带通信号的采样滤转换
任意带通信号均可转换成等效的低通信号,低通信号的采样率转换可以通过成熟的技术实现。然而,对于带通离散时间信号,更简单且使用更广泛的方法是整数谱带定位。
假设我们希望以因子
D
D
D 抽取谱限制在频带
(
k
−
1
)
π
D
<
∣
ω
∣
<
k
π
D
(k-1)\dfrac{\pi}{D}<|\omega|<k\dfrac{\pi}{D}
(k−1)Dπ<∣ω∣<kDπ 上的一个整数位置的带通信号,其中
k
k
k 是一个正整数。定义式(21)所示的带通滤波器用以消除期望频带范围之外的频率分量。
H
B
P
(
ω
)
=
{
1
,
(
k
−
1
)
π
D
<
∣
ω
∣
<
k
π
D
0
,
其他
H_{BP}(\omega)=\begin{cases}1,\quad (k-1)\dfrac{\pi}{D}<|\omega|<k\dfrac{\pi}{D}\\0,\quad 其他\end{cases}
HBP(ω)={1,(k−1)Dπ<∣ω∣<kDπ0,其他
同理,带通信号内插零后,需要通过带通带滤波器滤除多余的镜像分量。
}<|\omega|<k\dfrac{\pi}{D}$ 上的一个整数位置的带通信号,其中
k
k
k 是一个正整数。定义式(21)所示的带通滤波器用以消除期望频带范围之外的频率分量。
H
B
P
(
ω
)
=
{
1
,
(
k
−
1
)
π
D
<
∣
ω
∣
<
k
π
D
0
,
其他
H_{BP}(\omega)=\begin{cases}1,\quad (k-1)\dfrac{\pi}{D}<|\omega|<k\dfrac{\pi}{D}\\0,\quad 其他\end{cases}
HBP(ω)={1,(k−1)Dπ<∣ω∣<kDπ0,其他
同理,带通信号内插零后,需要通过带通带滤波器滤除多余的镜像分量。
参考资料
美 Proakis John G,美 Manolakis Dimitris G.数字信号处理:原理,算法与应用[M].电子工业出版社,2004.