一、前言
重采样分为上采样和下采样,下采样时需要对信号进行抽取,上采样时需要对信号进行插值,下面将介绍一种简单的重采样方式。
二、定义
减少抽样率以去掉过多数据的过程称为信号的抽取(decimatim )”,增加抽样率以增加数据的过程称为信号的“插值(interpolation)。抽取、插值及其二者相结合的使用便可实现信号抽样率的转换。
三、算法
1、信号的抽取
设
x
(
n
)
x(n)
x(n)为数字信号,欲使
f
s
f_s
fs减少
M
M
M倍,最简单的方法是将
x
(
n
)
x(n)
x(n)中的每个点中抽取一个,依次组成一个新的序列
y
(
n
)
y(n)
y(n),即
y
(
n
)
=
x
(
M
n
)
n
≥
0
(式1)
y(n)=x(Mn)\quad n\geq 0\tag{式1}
y(n)=x(Mn)n≥0(式1)
此时,
y
(
n
)
y(n)
y(n)和
x
(
n
)
x(n)
x(n)的DTFT有如下关系(详见附A):
Y
(
e
j
w
)
=
1
M
∑
k
=
0
M
−
1
X
(
e
j
(
w
−
2
π
k
)
/
M
)
(式2)
Y(e^{jw})=\frac{1}{M}\sum_{k=0}^{M-1}X(e^{j(w-2\pi k)/M})\tag{式2}
Y(ejw)=M1k=0∑M−1X(ej(w−2πk)/M)(式2)
其含义是,将信号
x
(
n
)
x(n)
x(n)做
M
M
M倍的抽取后,所得信号
y
(
n
)
y(n)
y(n)的频谱等于原信号
x
(
n
)
x(n)
x(n)的频谱先做
M
M
M倍的扩展,再在
w
w
w轴上做
2
π
M
(
k
=
1
,
2
,
.
.
.
,
M
−
1
)
\frac{2\pi}{M}\quad (k=1,2,...,M-1)
M2π(k=1,2,...,M−1)的移位后再迭加。如下图所示。
由抽样定理,在由 x ( t ) x(t) x(t)抽样变成 x ( n ) x(n) x(n)时,若保证 f s ≥ 2 f c f_s\geq 2f_c fs≥2fc,那么抽样的结果不会发生频谱混迭。对 x ( n ) x(n) x(n)做 M M M倍抽取得到 y ( n ) y(n) y(n),必须满足 f s ≥ 2 M f c f_s \geq 2Mf_c fs≥2Mfc。
为了防止抽取后在 Y ( e j w ) Y(e^{jw}) Y(ejw)中出现混迭的方法是在对 x ( n ) x(n) x(n)抽取前先做低通滤波,压缩其频带。
令
h
(
n
)
h(n)
h(n)为一理想低通滤波器,即
H
(
e
j
w
)
=
{
1
∣
w
∣
≤
2
π
M
0
o
t
h
e
r
s
H(e^{jw})=\begin{cases}1&|w|\leq \frac{2\pi}{M}\\0&others\end{cases}
H(ejw)={10∣w∣≤M2πothers
令滤波后的输出为
v
(
n
)
v(n)
v(n),则
v
(
n
)
=
∑
k
=
0
∞
h
(
k
)
x
(
M
n
−
k
)
v(n)=\sum_{k=0}^{\infty}h(k)x(Mn-k)
v(n)=k=0∑∞h(k)x(Mn−k)
=
∑
k
=
0
∞
x
(
k
)
h
(
M
n
−
k
)
=\sum_{k=0}^{\infty}x(k)h(Mn-k)
=k=0∑∞x(k)h(Mn−k)
得出
Y
(
z
)
=
1
M
∑
k
=
0
M
−
1
X
(
z
1
M
W
M
k
)
H
(
z
1
M
W
M
k
)
Y(z)=\frac{1}{M}\sum_{k=0}^{M-1}X(z^{\frac{1}{M}}W_M^k)H(z^{\frac{1}{M}}W_M^k)
Y(z)=M1k=0∑M−1X(zM1WMk)H(zM1WMk)
Y
(
e
j
w
)
=
1
M
∑
k
=
0
M
−
1
X
(
e
j
(
w
−
2
π
k
)
/
M
)
H
(
e
j
(
w
−
2
π
k
)
/
M
)
Y(e^{jw})=\frac{1}{M}\sum_{k=0}^{M-1}X(e^{j(w-2\pi k)/M})H(e^{j(w-2\pi k)/M})
Y(ejw)=M1k=0∑M−1X(ej(w−2πk)/M)H(ej(w−2πk)/M)
2、信号的插值
将
x
(
n
)
x(n)
x(n)的采样率
f
s
f_s
fs增加
L
L
L倍,即
L
f
s
Lf_s
Lfs,最简单的方法就是将
x
(
n
)
x(n)
x(n)每两个点之间补上
L
−
1
L-1
L−1个零。设补零后的信号为
v
(
n
)
v(n)
v(n),则
v
(
n
)
=
{
x
(
n
/
L
)
n
=
0
,
±
L
,
±
2
L
,
.
.
.
0
o
t
h
e
r
s
v(n)=\begin{cases}x(n/L)&n=0, \pm L, \pm 2L,...\\0&others\end{cases}
v(n)={x(n/L)0n=0,±L,±2L,...others
由于
V
(
e
j
w
)
=
∑
n
=
0
∞
v
(
n
)
e
−
j
w
n
=
∑
n
=
0
∞
x
(
n
/
L
)
e
−
j
w
n
V(e^{jw})=\sum_{n=0}^{\infty}v(n)e^{-jwn}=\sum_{n=0}^{\infty}x(n/L)e^{-jwn}
V(ejw)=n=0∑∞v(n)e−jwn=n=0∑∞x(n/L)e−jwn
=
∑
k
=
0
∞
x
(
k
)
e
−
j
w
k
L
=\sum_{k=0}^{\infty}x(k)e^{-jwkL}
=k=0∑∞x(k)e−jwkL
即
V
(
e
j
w
)
=
X
(
e
j
w
L
)
V(e^{jw})=X(e^{jwL})
V(ejw)=X(ejwL)
同理
V
(
z
)
=
X
(
z
L
)
V(z)=X(z^L)
V(z)=X(zL)
X
(
e
j
w
)
X(e^{jw})
X(ejw)的周期是
2
π
2\pi
2π,
X
(
e
j
w
L
)
X(e^{jwL})
X(ejwL)的周期是
2
π
/
L
2\pi /L
2π/L,
V
(
e
j
w
)
V(e^{jw})
V(ejw)周期也是
2
π
/
L
2\pi /L
2π/L。上式的含义是在
−
π
∼
π
-\pi \sim \pi
−π∼π的范围内,
X
(
e
j
w
)
X(e^{jw})
X(ejw)的宽带被压缩了
L
L
L,因此,
V
(
e
j
w
)
V(e^{jw})
V(ejw)在
−
π
∼
π
-\pi \sim \pi
−π∼π内包含了
L
L
L个
X
(
e
j
w
)
X(e^{jw})
X(ejw)的压缩样本(详见仿真)。多余的
L
−
1
L-1
L−1个周期称为
X
(
e
j
w
)
X(e^{jw})
X(ejw)的映像,我们要设法去除这些映像。
实际上,用塞进零的方法实现上采样是毫无意义的,因为补零是不可能增加信息的。需要对用 x ( n ) x(n) x(n)中的点对这些零点作出插值,实现插值的方式是用 v ( n ) v(n) v(n)和一低通滤波器做卷积。
令
H
(
e
j
w
)
=
{
C
∣
w
∣
≤
π
L
0
o
t
h
e
r
s
H(e^{jw})=\begin{cases}C&|w|\leq \frac{\pi}{L}\\0&others\end{cases}
H(ejw)={C0∣w∣≤Lπothers
其中,C是标定因子。令
v
(
n
)
v(n)
v(n)通过
h
(
n
)
h(n)
h(n)后的输出为
y
(
n
)
y(n)
y(n),这样滤波器的作用是去除了
V
(
e
j
w
)
V(e^{jw})
V(ejw)中多余的映像,另一方面,也实现了对
v
(
n
)
v(n)
v(n)中的零值点插值。
因为
Y
(
e
j
w
)
=
H
(
e
j
w
)
=
c
X
(
e
j
w
)
∣
w
∣
≤
π
L
Y(e^{jw})=H(e^{jw})=cX(e^{jw})\quad |w|\leq \frac{\pi}{L}
Y(ejw)=H(ejw)=cX(ejw)∣w∣≤Lπ
及
y
(
0
)
=
1
2
π
∫
−
π
π
Y
(
e
j
w
)
d
w
y(0)=\frac{1}{2\pi}\int_{-\pi}^{\pi}Y(e^{jw})dw
y(0)=2π1∫−ππY(ejw)dw
所以
y
(
0
)
=
c
2
π
∫
−
π
/
L
π
/
L
X
(
e
j
w
)
d
w
y(0)=\frac{c}{2\pi}\int_{-\pi/L}^{\pi/L}X(e^{jw})dw
y(0)=2πc∫−π/Lπ/LX(ejw)dw
=
c
2
π
L
∫
−
π
π
X
(
e
j
w
)
d
w
=
c
L
x
(
0
)
=\frac{c}{2\pi L}\int_{-\pi}^{\pi}X(e^{jw})dw=\frac{c}{L}x(0)
=2πLc∫−ππX(ejw)dw=Lcx(0)
这样,若取
c
=
L
c=L
c=L,则可以保证
y
(
0
)
=
x
(
0
)
y(0)=x(0)
y(0)=x(0)。
y
(
n
)
=
v
(
n
)
∗
h
(
n
)
=
∑
k
v
(
k
)
h
(
n
−
k
)
y(n)=v(n)*h(n)=\sum_{k}v(k)h(n-k)
y(n)=v(n)∗h(n)=k∑v(k)h(n−k)
=
∑
k
x
(
k
/
L
)
h
(
n
−
k
)
=\sum_{k}x(k/L)h(n-k)
=k∑x(k/L)h(n−k)
即
y
(
n
)
=
∑
k
=
0
∞
x
(
k
)
h
(
n
−
k
L
)
y(n)=\sum_{k=0}^{\infty}x(k)h(n-kL)
y(n)=k=0∑∞x(k)h(n−kL)
3、python仿真
实验方式:
对5Hz的正弦信号进行抽取和插值实验,倍数M=2
(01)抽值
从上到下依次是:
01、5Hz正弦信号 & 频谱
02、对01隔一置零 & 频谱
03、对01隔一抽值 & 频谱
04、对03低通滤波 & 频谱
(02)插值
从上到下依次是:
01、5Hz正弦信号 & 频谱
02、对01隔一插零 & 频谱
03、对02低通滤波 & 频谱
(3)失真初探
对同一段音频,进行重复的下采样上采样,在100次时,高频部分出现失真,不过不明显。
4、总结
简单的总结一下:
本文档介绍的是一种简单的信号下采样和上采样的算法。下面对上采样和下采样步骤进行简单的概括:
下采样:
01、低通
02、抽值
上采样:
01、插值
02、低通
参考文献
https://blog.csdn.net/shenziheng1/article/details/53373807
附
A
推导公式:
y
(
n
)
=
x
(
M
n
)
(A.1)
y(n)=x(Mn)\tag{A.1}
y(n)=x(Mn)(A.1)
其中的
y
(
n
)
y(n)
y(n)和
x
(
n
)
x(n)
x(n)在DTFT有如下关系:
Y
(
e
j
w
)
=
1
M
∑
k
=
0
M
−
1
X
(
e
j
(
w
−
2
π
k
)
/
M
)
(A.2)
Y(e^{jw})=\frac{1}{M}\sum_{k=0}^{M-1}X(e^{j(w-2\pi k)/M})\tag{A.2}
Y(ejw)=M1k=0∑M−1X(ej(w−2πk)/M)(A.2)
证明:
y
(
n
)
y(n)
y(n)的
z
z
z变换为
Y
(
z
)
=
∑
n
=
0
∞
y
(
n
)
z
−
n
=
∑
n
=
0
∞
x
(
M
n
)
z
−
n
(A.3)
Y(z)=\sum_{n = 0}^{\infty}y(n)z^{-n}=\sum_{n=0}^{\infty}x(Mn)z^{-n}\tag{A.3}
Y(z)=n=0∑∞y(n)z−n=n=0∑∞x(Mn)z−n(A.3)
定义一个中间变量
x
1
(
n
)
x_1(n)
x1(n):
x
1
(
n
)
=
{
x
(
n
)
n
=
0
,
±
M
,
±
2
M
,
.
.
.
0
o
t
h
e
r
s
(A.4)
x_1(n)=\begin{cases}x(n)&n=0,\pm M,\pm 2M,...\\0&others\end {cases}\tag{A.4}
x1(n)={x(n)0n=0,±M,±2M,...others(A.4)
x
1
(
n
)
x_1(n)
x1(n)的采样率为
f
s
f_s
fs,而
y
(
n
)
y(n)
y(n)的采样率是
f
s
/
M
f_s/M
fs/M。
显然,
y
(
n
)
=
x
(
M
n
)
=
x
1
(
M
n
)
y(n)=x(Mn)=x_1(Mn)
y(n)=x(Mn)=x1(Mn),有
Y
(
z
)
=
∑
n
=
0
∞
x
1
(
M
n
)
z
−
n
=
∑
n
=
0
∞
x
1
(
n
)
z
−
n
/
M
(A.5)
Y(z)=\sum_{n=0}^{\infty}x_1(Mn)z^{-n}=\sum_{n=0}^{\infty}x_1(n)z^{-n/M}\tag{A.5}
Y(z)=n=0∑∞x1(Mn)z−n=n=0∑∞x1(n)z−n/M(A.5)
即
Y
(
z
)
=
X
1
(
z
1
/
M
)
(A.6)
Y(z)=X_1(z^{1/M})\tag{A.6}
Y(z)=X1(z1/M)(A.6)
现接下来是找到
x
1
(
z
)
x_1(z)
x1(z)和
x
(
z
)
x(z)
x(z)之间的关系。
令
p
(
n
)
=
∑
i
=
0
∞
σ
(
n
−
M
i
)
p(n)=\sum_{i=0}^{\infty}\sigma(n-Mi)
p(n)=∑i=0∞σ(n−Mi)为一脉冲序列,它在
M
M
M的整数倍处的值为1,其余皆为0,其抽样频率为
f
s
f_s
fs,由Possion和公式及DFS理论,
p
(
n
)
p(n)
p(n)可以表示为
p
(
n
)
=
1
M
∑
k
=
0
M
−
1
W
M
−
k
n
,
W
M
=
e
−
j
2
π
/
M
(A.7)
p(n)=\frac{1}{M}\sum_{k=0}^{M-1}W_M^{-kn},\quad W_M=e^{-j2\pi /M}\tag{A.7}
p(n)=M1k=0∑M−1WM−kn,WM=e−j2π/M(A.7)
因为
x
1
(
n
)
=
x
(
n
)
p
(
n
)
x_1(n)=x(n)p(n)
x1(n)=x(n)p(n),所以
X
1
(
z
)
=
∑
n
=
0
∞
x
(
n
)
p
(
n
)
z
−
n
=
1
M
∑
n
=
0
∞
x
(
n
)
∑
k
=
0
M
−
1
(
W
M
)
−
k
n
z
−
n
(A.8)
X_1(z)=\sum_{n=0}^{\infty}x(n)p(n)z^{-n}=\frac{1}{M}\sum_{n=0}^{\infty}x(n)\sum_{k=0}^{M-1}(W_M)^{-kn}z^{-n}\tag{A.8}
X1(z)=n=0∑∞x(n)p(n)z−n=M1n=0∑∞x(n)k=0∑M−1(WM)−knz−n(A.8)
整理得
X
1
(
z
)
=
1
M
∑
k
=
0
M
−
1
X
(
z
W
M
k
)
(A.9)
X_1(z)=\frac{1}{M}\sum_{k=0}^{M-1}X(zW_M^k)\tag{A.9}
X1(z)=M1k=0∑M−1X(zWMk)(A.9)
将上式带入A.6中得
Y
(
z
)
=
1
M
∑
k
=
0
M
−
1
X
(
z
1
M
W
M
k
)
(A.10)
Y(z)=\frac{1}{M}\sum_{k=0}^{M-1}X(z^{\frac{1}{M}}W_M^k)\tag{A.10}
Y(z)=M1k=0∑M−1X(zM1WMk)(A.10)
令
z
=
e
j
w
z=e^{jw}
z=ejw,带入上式,即A.2,证毕。