引言
现代通信系统的收发机部分已经广泛地采用数字信号处理技术,实现信号处理。而实现这种替代的首要问题便是将之前的调制,滤波等技术变为数字处理。滤波的数字处理时通过设计FIR或IIR滤波器实现的,其设计方法是《数字信号处理》这门课程的重点之一,再次不加赘述。然而使用滤波器解决的实际问题便是匹配滤波。匹配滤波要求将一个方形的码元变化成升余弦型,而方形的码元,为了简便起见,在前序处理中是用单值表示的,但升余弦型码元肯定需要更多的值来描述,因此这里涉及到了高采样率的滤波器通过一个低采样率的信号的问题。对于这种实际问题,我们可以采用多采样率信号处理技术,也即引入“升/降采样”,对信号进行处理。
然而,在数字系统中,我们首先希望降低运算量,提高系统的效率,我们发现使用升采样的系统,如果采用直接实现方式,升采样中大量的0将会参与计算,这将提升计算的冗余度,因此,从公式推导中我们发现了一种低运算量的实现方式。
升采样具体推导
记号
为了区分不同采样率的信号,我们需要在信号右下角给出采样间隔:
原始采样间隔:
T
T
T,升采样采样间隔:
T
L
T_{L}
TL,满足:
T
=
L
T
L
T=LT_{L}
T=LTL
信号
s
[
n
]
L
s[n]_{L}
s[n]L为原始采样速率的信号,而
s
[
n
]
1
s[n]_{1}
s[n]1代表升采样后的信号。
推导
直接实现方式
令 c [ n ] 1 c[n]_{1} c[n]1为处理完成的信号,它由 s [ n ] L s[n]_{L} s[n]L经过了如下处理:
- 以按整数因子L升采样得到信号 s [ n ] 1 s[n]_{1} s[n]1,并有关系: s [ n L ] 1 = s [ n ] L s[nL]_{1}=s[n]_{L} s[nL]1=s[n]L,且当 n ≠ k L , k ∈ Z n\neq kL,k\in Z n̸=kL,k∈Z时, s [ n ] 1 = 0 s[n]_{1}=0 s[n]1=0
- 通过低通滤波器 g t x [ n ] 1 g_{tx}[n]_{1} gtx[n]1,使得波形更加连续,得到信号 c [ n ] 1 c[n]_{1} c[n]1
则信号通过滤波器可以写作如下卷积:
c
[
n
]
1
=
s
[
n
]
1
∗
g
t
x
[
n
]
1
=
∑
m
=
−
∞
+
∞
s
[
m
]
1
g
t
x
[
n
−
m
]
1
=
∑
k
L
=
−
∞
+
∞
s
[
k
L
]
1
g
t
x
[
n
−
k
L
]
1
=
∑
k
=
−
∞
+
∞
s
[
k
]
L
g
t
x
[
n
−
k
L
]
1
\begin{aligned} c[n]_{1} &= s[n]_{1}*g_{tx}[n]_{1} \\ &=\sum^{+\infty}_{m=-\infty}s[m]_{1}g_{tx}[n-m]_{1}\\ &=\sum^{+\infty}_{kL=-\infty}s[kL]_{1}g_{tx}[n-kL]_{1}\\ &=\sum^{+\infty}_{k=-\infty}s[k]_{L}g_{tx}[n-kL]_{1} \end{aligned}
c[n]1=s[n]1∗gtx[n]1=m=−∞∑+∞s[m]1gtx[n−m]1=kL=−∞∑+∞s[kL]1gtx[n−kL]1=k=−∞∑+∞s[k]Lgtx[n−kL]1
滤波器组实现方式
拆分信号
我们希望把最后一个式子写作两个原始采样率的信号的卷积,于是有了下面的记号:
记
c
l
[
n
]
L
=
c
[
n
L
+
l
]
1
l
=
0
,
1
,
⋯
 
,
L
−
1
记
g
t
x
l
[
n
]
L
=
g
t
x
[
n
L
+
l
]
1
l
=
0
,
1
,
⋯
 
,
L
−
1
c
l
[
n
]
L
=
∑
k
=
−
∞
+
∞
s
[
k
]
L
g
t
x
[
(
n
L
+
l
)
−
k
L
]
1
=
∑
k
=
−
∞
+
∞
s
[
k
]
L
g
t
x
[
(
n
−
k
)
L
+
l
]
1
=
∑
k
=
−
∞
+
∞
s
[
k
]
L
g
t
x
l
[
n
−
k
]
L
\begin{aligned} \text{记}c^{l}[n]_{L}&=c[nL+l]_{1}\quad l=0,1,\cdots,L-1\\ \text{记}g_{tx}^{l}[n]_{L}&=g_{tx}[nL+l]_{1}\quad l=0,1,\cdots,L-1\\ c^{l}[n]_{L}&=\sum^{+\infty}_{k=-\infty}s[k]_{L}g_{tx}[(nL+l)-kL]_{1}\\ &=\sum^{+\infty}_{k=-\infty}s[k]_{L}g_{tx}[(n-k)L+l]_{1}\\ &=\sum^{+\infty}_{k=-\infty}s[k]_{L}g_{tx}^{l}[n-k]_{L}\\ \end{aligned}
记cl[n]L记gtxl[n]Lcl[n]L=c[nL+l]1l=0,1,⋯,L−1=gtx[nL+l]1l=0,1,⋯,L−1=k=−∞∑+∞s[k]Lgtx[(nL+l)−kL]1=k=−∞∑+∞s[k]Lgtx[(n−k)L+l]1=k=−∞∑+∞s[k]Lgtxl[n−k]L
这样就得到了
c
[
n
]
1
c[n]_{1}
c[n]1中的L个子集,这些子集是由低采样率的信号卷积组成的。接下来的任务是找到L个子集拼接成
c
[
n
]
1
c[n]_{1}
c[n]1的方法
重构信号
先对信号进行增采样:
记
c
l
[
n
]
1
=
∑
m
=
−
∞
+
∞
c
l
[
m
]
L
δ
[
n
−
m
L
]
1
l
=
0
,
1
,
⋯
 
,
L
−
1
\text{记}c^{l}[n]_{1}=\sum^{+\infty}_{m=-\infty}c^{l}[m]_{L}\delta[n-mL]_{1}\quad l=0,1,\cdots,L-1
记cl[n]1=m=−∞∑+∞cl[m]Lδ[n−mL]1l=0,1,⋯,L−1
我们用矩阵的形式写出信号的表达式,假设L=5:
[
c
0
[
n
]
1
c
1
[
n
]
1
c
2
[
n
]
1
c
3
[
n
]
1
c
4
[
n
]
1
]
=
[
⋯
c
0
[
0
]
L
0
0
0
0
c
0
[
1
]
L
0
0
0
0
⋯
⋯
c
1
[
0
]
L
0
0
0
0
c
1
[
1
]
L
0
0
0
0
⋯
⋯
c
2
[
0
]
L
0
0
0
0
c
2
[
1
]
L
0
0
0
0
⋯
⋯
c
3
[
0
]
L
0
0
0
0
c
3
[
1
]
L
0
0
0
0
⋯
⋯
c
4
[
0
]
L
0
0
0
0
c
4
[
1
]
L
0
0
0
0
⋯
]
\left[ \begin{matrix} c^{0}[n]_{1}\\ c^{1}[n]_{1}\\ c^{2}[n]_{1}\\ c^{3}[n]_{1}\\ c^{4}[n]_{1}\\ \end{matrix} \right]= \left[ \begin{matrix} \cdots&c^{0}[0]_{L}&0&0&0&0&c^{0}[1]_{L}&0&0&0&0\cdots\\ \cdots&c^{1}[0]_{L}&0&0&0&0&c^{1}[1]_{L}&0&0&0&0\cdots\\ \cdots&c^{2}[0]_{L}&0&0&0&0&c^{2}[1]_{L}&0&0&0&0\cdots\\ \cdots&c^{3}[0]_{L}&0&0&0&0&c^{3}[1]_{L}&0&0&0&0\cdots\\ \cdots&c^{4}[0]_{L}&0&0&0&0&c^{4}[1]_{L}&0&0&0&0\cdots\\ \end{matrix} \right]
⎣⎢⎢⎢⎢⎡c0[n]1c1[n]1c2[n]1c3[n]1c4[n]1⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡⋯⋯⋯⋯⋯c0[0]Lc1[0]Lc2[0]Lc3[0]Lc4[0]L00000000000000000000c0[1]Lc1[1]Lc2[1]Lc3[1]Lc4[1]L0000000000000000⋯0⋯0⋯0⋯0⋯⎦⎥⎥⎥⎥⎤
接着进行移位:
[
c
0
[
n
−
0
]
1
c
1
[
n
−
1
]
1
c
2
[
n
−
2
]
1
c
3
[
n
−
3
]
1
c
4
[
n
−
4
]
1
]
=
[
⋯
c
0
[
0
]
L
0
0
0
0
c
0
[
1
]
L
0
0
0
0
⋯
⋯
0
c
1
[
0
]
L
0
0
0
0
c
1
[
1
]
L
0
0
0
⋯
⋯
0
0
c
2
[
0
]
L
0
0
0
0
c
2
[
1
]
L
0
0
⋯
⋯
0
0
0
c
3
[
0
]
L
0
0
0
0
c
3
[
1
]
L
0
⋯
⋯
0
0
0
0
c
4
[
0
]
L
0
0
0
0
c
4
[
1
]
L
⋯
]
=
[
⋯
c
[
0
]
1
0
0
0
0
c
[
5
]
1
0
0
0
0
⋯
⋯
0
c
[
1
]
1
0
0
0
0
c
[
6
]
1
0
0
0
⋯
⋯
0
0
c
[
2
]
2
0
0
0
0
c
[
7
]
1
0
0
⋯
⋯
0
0
0
c
[
3
]
1
0
0
0
0
c
[
8
]
1
0
⋯
⋯
0
0
0
0
c
[
4
]
1
0
0
0
0
c
[
9
]
1
⋯
]
\begin{aligned} \left[ \begin{matrix} c^{0}[n-0]_{1}\\ c^{1}[n-1]_{1}\\ c^{2}[n-2]_{1}\\ c^{3}[n-3]_{1}\\ c^{4}[n-4]_{1}\\ \end{matrix} \right]&= \left[ \begin{matrix} \cdots&c^{0}[0]_{L}&0&0&0&0&c^{0}[1]_{L}&0&0&0&0&\cdots\\ \cdots&0&c^{1}[0]_{L}&0&0&0&0&c^{1}[1]_{L}&0&0&0&\cdots\\ \cdots&0&0&c^{2}[0]_{L}&0&0&0&0&c^{2}[1]_{L}&0&0&\cdots\\ \cdots&0&0&0&c^{3}[0]_{L}&0&0&0&0&c^{3}[1]_{L}&0&\cdots\\ \cdots&0&0&0&0&c^{4}[0]_{L}&0&0&0&0&c^{4}[1]_{L}&\cdots\\ \end{matrix} \right]\\&= \left[ \begin{matrix} \cdots&c[0]_{1}&0&0&0&0&c[5]_{1}&0&0&0&0&\cdots\\ \cdots&0&c[1]_{1}&0&0&0&0&c[6]_{1}&0&0&0&\cdots\\ \cdots&0&0&c[2]_{2}&0&0&0&0&c[7]_{1}&0&0&\cdots\\ \cdots&0&0&0&c[3]_{1}&0&0&0&0&c[8]_{1}&0&\cdots\\ \cdots&0&0&0&0&c[4]_{1}&0&0&0&0&c[9]_{1}&\cdots\\ \end{matrix} \right] \end{aligned}
⎣⎢⎢⎢⎢⎡c0[n−0]1c1[n−1]1c2[n−2]1c3[n−3]1c4[n−4]1⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡⋯⋯⋯⋯⋯c0[0]L00000c1[0]L00000c2[0]L00000c3[0]L00000c4[0]Lc0[1]L00000c1[1]L00000c2[1]L00000c3[1]L00000c4[1]L⋯⋯⋯⋯⋯⎦⎥⎥⎥⎥⎤=⎣⎢⎢⎢⎢⎡⋯⋯⋯⋯⋯c[0]100000c[1]100000c[2]200000c[3]100000c[4]1c[5]100000c[6]100000c[7]100000c[8]100000c[9]1⋯⋯⋯⋯⋯⎦⎥⎥⎥⎥⎤
于是有:
c
[
n
]
1
=
∑
l
=
0
L
−
1
c
l
[
n
−
l
]
1
c[n]_{1}=\sum^{L-1}_{l=0}c^{l}[n-l]_{1}
c[n]1=l=0∑L−1cl[n−l]1
将表达式整合即有:
c
[
n
]
1
=
∑
l
=
0
L
−
1
c
l
[
n
−
l
]
1
=
∑
l
=
0
L
−
1
∑
m
=
−
∞
+
∞
c
l
[
m
]
L
δ
[
n
−
m
L
−
l
]
1
=
∑
l
=
0
L
−
1
∑
m
=
−
∞
+
∞
(
∑
k
=
−
∞
+
∞
s
[
k
]
L
g
t
x
l
[
n
−
k
]
L
)
δ
[
n
−
m
L
−
l
]
1
\begin{aligned} c[n]_{1}&=\sum^{L-1}_{l=0}c^{l}[n-l]_{1}\\ &=\sum^{L-1}_{l=0}\sum^{+\infty}_{m=-\infty}c^{l}[m]_{L}\delta[n-mL-l]_{1}\\ &=\sum^{L-1}_{l=0}\sum^{+\infty}_{m=-\infty}(\sum^{+\infty}_{k=-\infty}s[k]_{L}g_{tx}^{l}[n-k]_{L})\delta[n-mL-l]_{1} \end{aligned}
c[n]1=l=0∑L−1cl[n−l]1=l=0∑L−1m=−∞∑+∞cl[m]Lδ[n−mL−l]1=l=0∑L−1m=−∞∑+∞(k=−∞∑+∞s[k]Lgtxl[n−k]L)δ[n−mL−l]1
用滤波器组实现升采样的步骤可以归纳为:
- 将原始采样速率的信号分别通过 g t x l [ n − k ] L g_{tx}^{l}[n-k]_{L} gtxl[n−k]L得到n组信号 c l [ n ] L c^{l}[n]_{L} cl[n]L
- 将n组信号分别进行升采样,得到 c l [ n ] 1 c^{l}[n]_{1} cl[n]1
- 将不同的信号流按标号延迟,并相加得到原信号 c [ n ] 1 c[n]_{1} c[n]1
降采样具体推导
记号
为了区分不同采样率的信号,我们需要在信号右下角给出采样间隔:
原始采样间隔:
T
T
T,降采样采样间隔:
T
M
T_{M}
TM,满足:
T
M
=
M
T
T_{M}=MT
TM=MT
信号
s
[
n
]
1
s[n]_{1}
s[n]1为原始采样速率的信号,而
s
[
n
]
M
s[n]_{M}
s[n]M代表升采样后的信号。
推导
直接实现方式
令 y [ n ] M y[n]_{M} y[n]M为处理完成的信号,它由 z [ n ] 1 z[n]_{1} z[n]1经过了如下处理:
- 通过低通滤波器 g r x [ n ] 1 g_{rx}[n]_{1} grx[n]1,滤去多余信号,得到信号 y [ n ] 1 y[n]_{1} y[n]1
- 以按整数因子M降采样得到信号 y [ n ] M y[n]_{M} y[n]M,并有关系: y [ n ] M = y [ n M ] 1 y[n]_{M}=y[nM]_{1} y[n]M=y[nM]1
则信号通过滤波器可以写作如下卷积:
y
[
n
]
M
=
∑
m
=
−
∞
+
∞
z
[
m
]
1
g
r
x
[
n
M
−
m
]
1
=
∑
m
=
−
∞
+
∞
z
[
n
M
−
m
]
1
g
r
x
[
m
]
1
\begin{aligned} y[n]_{M} &=\sum^{+\infty}_{m=-\infty}z[m]_{1}g_{rx}[nM-m]_{1}\\ &=\sum^{+\infty}_{m=-\infty}z[nM-m]_{1}g_{rx}[m]_{1}\\ \end{aligned}
y[n]M=m=−∞∑+∞z[m]1grx[nM−m]1=m=−∞∑+∞z[nM−m]1grx[m]1
滤波器组实现方式
拆分信号
我们希望把最后一个式子写作两个原始采样率的信号的卷积,进行变形:
令
m
=
p
M
−
k
y
[
n
]
M
=
∑
m
=
−
∞
+
∞
z
[
m
]
1
g
r
x
[
n
M
−
m
]
1
=
∑
p
=
−
∞
+
∞
∑
k
=
0
M
−
1
z
[
p
M
−
k
]
1
g
r
x
[
n
M
−
p
M
+
k
]
1
=
∑
k
=
0
M
−
1
∑
p
=
−
∞
+
∞
z
[
p
M
−
k
]
1
g
r
x
[
n
M
−
p
M
+
k
]
1
\begin{aligned} \text{令}m=pM-k\\ y[n]_{M} &=\sum^{+\infty}_{m=-\infty}z[m]_{1}g_{rx}[nM-m]_{1}\\ &=\sum^{+\infty}_{p=-\infty}\sum^{M-1}_{k=0}z[pM-k]_{1}g_{rx}[nM-pM+k]_{1}\\ &=\sum^{M-1}_{k=0}\sum^{+\infty}_{p=-\infty}z[pM-k]_{1}g_{rx}[nM-pM+k]_{1}\\ \end{aligned}
令m=pM−ky[n]M=m=−∞∑+∞z[m]1grx[nM−m]1=p=−∞∑+∞k=0∑M−1z[pM−k]1grx[nM−pM+k]1=k=0∑M−1p=−∞∑+∞z[pM−k]1grx[nM−pM+k]1
如果:
记
z
k
[
p
]
M
=
z
[
p
M
−
k
]
1
k
=
0
,
1
,
⋯
 
,
M
−
1
记
g
r
x
k
[
m
]
M
=
g
r
x
[
m
M
+
k
]
1
k
=
0
,
1
,
⋯
 
,
M
−
1
y
[
n
]
M
=
∑
k
=
0
M
−
1
∑
p
=
−
∞
+
∞
z
[
p
M
−
k
]
1
g
r
x
[
n
M
−
p
M
+
k
]
1
=
∑
k
=
0
M
−
1
∑
p
=
−
∞
+
∞
z
k
[
p
]
M
g
r
x
k
[
n
−
p
]
M
=
∑
k
=
0
M
−
1
z
k
[
n
]
M
∗
g
r
x
k
[
n
]
M
\begin{aligned} \text{记}z^{k}[p]_{M}&=z[pM-k]_{1}\quad k=0,1,\cdots,M-1\\ \text{记}g_{rx}^{k}[m]_{M}&=g_{rx}[mM+k]_{1}\quad k=0,1,\cdots,M-1\\ y[n]_{M} &=\sum^{M-1}_{k=0}\sum^{+\infty}_{p=-\infty}z[pM-k]_{1}g_{rx}[nM-pM+k]_{1}\\ &=\sum^{M-1}_{k=0}\sum^{+\infty}_{p=-\infty}z^{k}[p]_{M}g_{rx}^{k}[n-p]_{M}\\ &=\sum^{M-1}_{k=0}z^{k}[n]_{M}*g_{rx}^{k}[n]_{M}\\ \end{aligned}
记zk[p]M记grxk[m]My[n]M=z[pM−k]1k=0,1,⋯,M−1=grx[mM+k]1k=0,1,⋯,M−1=k=0∑M−1p=−∞∑+∞z[pM−k]1grx[nM−pM+k]1=k=0∑M−1p=−∞∑+∞zk[p]Mgrxk[n−p]M=k=0∑M−1zk[n]M∗grxk[n]M
这样就得到了
y
[
n
]
M
y[n]_{M}
y[n]M的结果,可以用如下方法重构信号。
重构信号
用滤波器组实现降采样的步骤可以归纳为:
- 将原始采样速率的信号 z [ n ] 1 z[n]_{1} z[n]1分别通过延迟器得到 z [ n − k ] 1 z[n-k]_{1} z[n−k]1,然后降采样得到 z [ n M − k ] 1 = z k [ n ] 1 z[nM-k]_{1}=z^{k}[n]_{1} z[nM−k]1=zk[n]1
- 将n组信号分别通过滤波器 g r x k [ n ] M g_{rx}^{k}[n]_{M} grxk[n]M
- 将所有通过滤波器的结果求和相加
滤波器拆分方法
可以看到,滤波器的拆分方法是相同的:
g
t
x
l
[
n
]
L
=
g
t
x
[
n
L
+
l
]
1
l
=
0
,
1
,
⋯
 
,
L
−
1
g
r
x
k
[
m
]
M
=
g
r
x
[
m
M
+
k
]
1
k
=
0
,
1
,
⋯
 
,
M
−
1
\begin{aligned} g_{tx}^{l}[n]_{L}&=g_{tx}[nL+l]_{1}\quad l=0,1,\cdots,L-1\\ g_{rx}^{k}[m]_{M}&=g_{rx}[mM+k]_{1}\quad k=0,1,\cdots,M-1\\ \end{aligned}
gtxl[n]Lgrxk[m]M=gtx[nL+l]1l=0,1,⋯,L−1=grx[mM+k]1k=0,1,⋯,M−1