数字信号
信号是信息的物理载体,信息是信号的具体内容。
连续时间信号:在连续时间范围内定义的信号,信号的幅度可以是连续的(模拟信号),也可以是离散的
离散时间信号:时间为离散变量的信号,即独立变量时间被量化了,而幅度仍是连续变化的
数字信号:时间离散而幅度量化的信号
从模拟信号到数字信号
我们经常处理语音的时候会发现两个常用的格式:“pcm”和“wav”,这两种格式其实本质上是一样的,pam是脉冲编码调制(pulse code modulation)的一个缩写,pcm的实质就是这三个步骤:采样量化编码。
数字信号基本运算
移位:设某一序列x(n),当m>0 时,x(n-m) 表示序列x(n) 逐项依次延时(右移)m 位。(左加右减)
翻褶:设某一序列x(n),则x(-n) 是以n=0 的纵轴为对称轴将x(n) 加以翻褶。
和:$z(n)=x(n)+y(n)$
积:$z(n)=x(n)·y(n)$
累加:$y(n)=sum_{k=-infty}^{n}x(k)$
差分 (一阶):$y(n)=x(n)-x(n-1)$
尺度变换:对于序列$x(n)$, 形如x(mn)或者x(frac{n}{m})(m为正整数)的序列为$x(n)$的尺度变换序列。
以$x(2n)$为例,是以低一倍的抽样频率从x(n)中每隔两点取一点,这种运算称为抽取,常用于语音信号的下采样,通常在抽取之前要加入一个防混叠的滤波器。
类似的,$x(frac{n}{2})$ 称为插值,在语音信号每两个点之间插入一个值,因为我们不知道这个插入的值是多少,一般插0,本身信息并没有增加,通常在插值之后我们还需要一个平滑,也就是在插入这些零点之后,后接一个平滑滤波器,利用相邻采样点之间的取值,把插入的值算出来,常用于语音升采样。
线性卷积 (linear convolution) : $y(n)=sum_{m=-infty}^{infty} x(m) h(n-m)=x(n) * h(n)$
由卷积的定义可知,卷积在图形表示上可分为四步:翻褶、移位、相乘、相加。
$x_n$的长度为$N_1$,$h(n)$的长度为$N_2$,卷积之后信号$y(n)$的长度为$N_1+N_2-1$
线性卷积的应用:模拟远场数据
近讲纯净语音信号卷积一个房间冲击响应(RIR)=远场语音信号(带有混响)
圆周移位 (circular shift) :$x_{m}(n)=x((n+m))_{N} R_{N}(n)$
其中,$x((n+m))_N$表示$x(n)$经过周期( N )延拓后的序列,再移位$m$,$R_N(n)$为取主值序列$R_{N}(n)=left{egin{array}{ll}1 & 0 leqslant n leqslant N-1 \0 & ext { other } nend{array} ight.$
圆周卷积 (circular convolution):
如果$x_1(n)$和$x_2(n)$都是长度为 N 的有限长序列$0leq nleq N-1$,并且
$left{egin{matrix}D F Tleft[x_{1}(n) ight]=X_{1}(k)\ D F Tleft[x_{2}(n) ight]=X_{2}(k)end{matrix} ight.$==》$Y(k)=X_{1}(k) X_{2}(k)$
则$x_1(n)$和$x_2(n)$的圆周卷积定义为
$$egin{aligned}
y(n)=I D F T[Y(k)] &=left[sum_{m=0}^{N-1} x_{1}(m) x_{2}((n-m))_{N}
ight] R_{N}(n) \
&=left[sum_{m=0}^{N-1} x_{2}(m) x_{1}((n-m))_{N}
ight] R_{N}(n)
end{aligned}$$
结论:在时域的圆周卷积相当于在频域这两个傅里叶变换的乘积
注意:与线性卷积相比,圆周卷积多了 周期延拓 和 取主值序列 两个步骤。因此必须指定圆周卷积的点数 N 。
圆周卷积和线性卷积的关系
圆周卷积
$$egin{aligned}
y(n)=I D F T[Y(k)] &=left[sum_{m=0}^{N-1} x_{1}(m) x_{2}((n-m))_{N}
ight] R_{N}(n) \
&=left[sum_{m=0}^{N-1} x_{2}(m) x_{1}((n-m))_{N}
ight] R_{N}(n)
end{aligned}$$
线性卷积
$$y(n)=sum_{m=-infty}^{infty} x(m) h(n-m)=x(n) * h(n)$$
给定两个有限长序列$x_1(n)$和$x_2(n)$,他们的长度分别为:$N_1=5$,$N_2=3$。相应的取值如下图,我们重点研究$0leq nleq N-1$这个区间内,线性卷积和圆周卷积的关系。
一般的,如果两个有限长序列的长度为$N_1$和$N_2$,且满足$N_1geq N_2$,则圆周卷积的后N_1-N_2+1个点,与线性卷积的结果一致。
线性相关(linear correlation) :$r_{x y}(m)=sum_{n=-infty}^{infty} x(n) y^{*}(n-m)$
圆周相关(circular correlation):
如果:$R_{x y}(k)=X(k) Y^{*}(k)$
则$x(n)$和$y(n)$的圆周相关定义为:
$$r_{x y}(m)=I D F Tleft[R_{x y}(k) ight]=sum_{n=0}^{N-1} y^{*}(n) x((n+m))_{N} R_{N}(m)=sum_{n=0}^{N-1} x(n) y^{*}((n-m))_{N} R_{N}(m)$$
圆周相关和线性相关的关系线:一般的,如果两个有限长序列的长度为$N_1$和$N_2$,且满足$N_1geq N_2$,则有圆周相关的前$N_1-N_2+1$个点,与线性相关的结果一致。
采样定理
模拟信号的采样:
采样:利用周期性冲激函数序列,从连续信号$x_a(t)$中抽取一系列的离散值,得到采样信号,即离散时间信号 $hat{x}_a(t)$。
冲激函数序列:$公式2.1:delta_{T}(t)=sum_{m=-infty}^{infty} delta(t-m T)$
则,采样信号:$公式2.2:hat{x}_{a}(t)=x_{a}(t) cdot delta_{T}(t)$
将(2.1)代入(2.2),得:$hat{x}_{a}(t)=sum_{m=-infty}^{infty} x_{a}(t) delta(t-m T)$
由于$delta(t-mT)$只在$t=mT$处于不为零,因此:
$$hat{x}_{a}(t)=sum_{m=-infty}^{infty} x_{a}(m T) delta(t-m T)$$
采样后信号频谱的变化
$$hat{x}_{a}(t)=x_{a}(t) cdot delta_{T}(t)$$
等式两端取DTFT之后
$$hat{X}_{a}(j Omega)=frac{1}{2 pi}left[Delta_{T}(j Omega) * X_{a}(j Omega) ight]=frac{1}{T} sum_{k=-infty}^{infty} X_{a}left(jleft(Omega-k Omega_{s} ight) ight)$$
其中$Delta_{T}(j Omega)=D T F Tleft[delta_{T}(t) ight]$
结论:频谱产生了周期延拓 ,周期为$Omega_s$。因此,只要各延拓分量与原频谱分量不发生频率交叠,则可以恢复原信号。
公式推导
$$hat{X}_{a}(j Omega)=frac{1}{2 pi}left[Delta_{T}(j Omega) * X_{a}(j Omega) ight]=frac{1}{T} sum_{k=-infty}^{infty} X_{a}left(jleft(Omega-k Omega_{s} ight) ight)$$
其中$Delta_{T}(j Omega)=D T F Tleft[delta_{T}(t) ight]$,由于$delta_T(t)$是周期信号(周期为 T ),则可以表示成傅里叶级数
$$delta_{T}(t)=sum_{k=-infty}^{infty} A_{k} e^{j k Omega_{s} t}$$
其中$Omega_{s}=frac{2 pi}{T}$为采样频率,
$$egin{aligned}
A_{k} &=frac{1}{T} int_{T} delta_{T}(t) e^{-j k Omega_{d} t} d t=frac{1}{T} int_{T} sum_{m=-infty}^{infty} delta(t-m T) e^{-j k Omega_{c} t} d t \
&=frac{1}{T} int_{T} delta(t) e^{-j k Omega_{s} t} d t=frac{1}{T}
end{aligned}$$
因为在一个积分区间T$[-frac{T}{2}, frac{T}{2}]$内,只有一个冲激函数。
奈奎斯特采样定理
要想采样后能够无失真的还原出原信号,则采样频率必须大于两倍信号谱的最高频率。
$$f_{s}>2 f_{h}$$
空间“采样定理
频域 | 空域 | |
采样 | 冲激函数序列 | 麦克风 |
采样率 | $f_s$ | $d$ |
信号的最高频率 | $f_h$ | $lambda_{min}$ |
防混叠条件 | $f_s>2f_h$ | $d<frac{lambda_{min}}{2}$ |
时频分析与傅里叶变换
变换是一种常用的数学工具
其中$e_x$和$e_y$构成标准正交基 ,满足如下条件前
$$left{egin{array}{c}
left|mathbf{e}_{x}
ight|=left|mathbf{e}_{y}
ight|=1 \
leftlanglemathbf{e}_{x}, mathbf{e}_{y}
ight
angle=0
end{array}
ight.$$
前面的系数表示平面中的点在这个基向量方向上有多少个单位长度。
利用正弦波模拟方波
何为“频域”?
傅里叶级数 (Fourier Series)
如果$x(t)$是一个周期为$T_0$的周期性连续函数,则$x(t)$可展开成傅里叶级数:
$$egin{array}{l}
x(t)=sum_{k=-infty}^{infty} Xleft(j k Omega_{0}
ight) e^{j k Omega_{0} t} \
Xleft(j k Omega_{0}
ight)=frac{1}{T_{0}} int_{-T_{0} / 2}^{T_{0} / 2} x(t) e^{-j k Omega_{0} t} d t
end{array}$$
解读:$Omega_{0}=2 pi F=frac{2 pi}{T_{0}}$傅里叶级数系数的计算,实质上是通过内积的方式,“抽取”对应频率分量的系数。
连续傅里叶变换 (Fourier Transform)
连续非周期信号$x(t)$的傅里叶变换可以表示为:
$$egin{array}{l}
X(j Omega)=int_{-infty}^{infty} x(t) e^{-j Omega t} d t \
x(t)=frac{1}{2 pi} int_{-infty}^{infty} X(j Omega) e^{j Omega t} d Omega
end{array}$$
解读:这应该是大家在“信号与系统”里学到的第一个傅里叶变换公式。它仍然是通过内积的方式,“抽取”对应频率分量的系数。与傅里叶级数不同的是,由于时域信号非周期,因此频域中是连续谱。
离散时间傅里叶变换 (Discrete Time Fourier Transform)
离散非周期信号 x(n) 的 DTFT 可以表示为:
$$egin{array}{l}
Xleft(e^{j omega}
ight)=sum_{n=-infty}^{infty} x(n) e^{-j omega n} \
x(n)=frac{1}{2 pi} int_{-pi}^{pi} Xleft(e^{j omega}
ight) e^{j omega n} d omega
end{array}$$
解读:DTFT 与傅里叶级数互为正反变换。
离散傅里叶变换 (Discrete Fourier Transform)
离散周期信号 x(n) 的 DFT 可以表示为:
$$egin{array}{l}
X(k)=sum_{n=0}^{N-1} x(n) e^{-j frac{2 pi}{N} n k}=sum_{n=0}^{N-1} x(n) W_{N}^{n k} \
x(n)=frac{1}{N} sum_{k=0}^{N-1} X(k) e^{j frac{2 pi}{N} n k}=frac{1}{N} sum_{k=0}^{N-1} X(k) W_{n}^{-n k}
end{array}$$
其中$W_{N}=e^{-j frac{2 pi}{N}}$
解读:DFT 只针对有限长序列或周期序列。
DFT相当于对 DTFT 中的正变换加以采样,造成时域信号的周期性,因此时域信号应限制在一个周期内。 凡是用到离散傅里叶变换的时候,有限长序列都是作为周期序列的一个周期来表示的,都隐含有周期性意义。
离散傅里叶变换的矩阵形式
定义Fourier 矩阵:
$$mathbf{F}=left[egin{array}{ccccc}
1 & 1 & 1 & ldots & 1 \
1 & W_{N} & W_{N}^{2} & ldots & W_{N}^{N-1} \
vdots & vdots & vdots & vdots & vdots \
1 & W_{N}^{N-1} & W_{N}^{2(N-1)} & ldots & W_{N}^{(N-1)(N-1)}
end{array}
ight] quad W_{N=e^{-j frac{2 pi}{N}}}$$
Fourier矩阵的性质:$mathbf{F}^{H} mathbf{F}=mathbf{F} mathbf{F}^{H}=N mathbf{I}$--->$mathbf{F}^{-1}=frac{1}{N} mathbf{F}^{H}$
$$egin{array}{l}
mathbf{X}(k)=mathbf{F x}(n) \
mathbf{x}(n)=mathbf{F}^{-1} mathbf{X}(k)
end{array}$$
傅里叶变换的四种形式
时间函数 | 正变换 | 反变换 | 频率函数 | |
Fourier |
连续 |
$X(j Omega)=int_{-infty}^{infty} x(t) e^{-j Omega} d t$ | $x(t)=frac{1}{2 pi} int_{-infty}^{infty} X(j Omega) e^{i Omega t} d Omega$ |
非周期 |
Fourier |
连续 |
$Xleft(j k Omega_{0} ight)=frac{1}{T_{0}} int_{-T_{0} / 2}^{T_{0} / 2} x(t) e^{-j k Omega_{0} t} d t$ | $x(t)=sum_{k=-infty}^{infty} Xleft(j k Omega_{0} ight) e^{j k Omega_{0} t}$ |
非周期 |
DTFT |
离散 |
$Xleft(e^{j omega} ight)=sum_{n=-infty}^{infty} x(n) e^{-j omega n}$ | $x(n)=frac{1}{2 pi} int_{-pi}^{pi} Xleft(e^{j omega} ight) e^{j omega n} d omega$ |
周期 |
DFT |
离散 |
$X(k)=sum_{n=0}^{N-1} x(n) W_{N}^{n k}$ | $x(n)=frac{1}{N} sum_{k=0}^{N-1} X(k) W_{n}^{-n k}$ |
周期 |
离散傅里叶变换的几个问题
频谱泄漏
频谱泄漏是指由于信号截断造成的原始信号频谱扩散现象。
产生频谱泄漏的原因是对信号的截断 。信号的截断相当于在原始信号$x(n)$与一个窗函数$w(n)$相乘,在频域中相当于各自频谱的卷积过程。卷积的结果造成原始信号频谱的“扩散”(或拖尾、变宽),这就是频谱泄漏。
减少频率泄露的方法:
- 加窗,选择合适的窗函数
- 选择更长的窗长
栅栏效应
因为DFT 计算频谱只限制在离散点上的频谱,也就是$F_0$的整数倍处的谱,而无法看到连续频谱函数,这就像通过一个“栅栏”观看景象一样,只能在离散点的地方看到真实景象。这种现象称为“栅栏效应”。
减小栅栏效应的方法就是要是频域抽样更密,即增加频域抽样点数,就好像距离“栅栏”的距离边远一些。在不改变时域信号的情况下,必然是在时域信号末端 补零 。补零后的时域数据,在频谱中的谱线更密,原来看不到的谱分量就有可能看到了。
语音信号DFT的共轭对称性
时域中的语音信号,经过离散傅里叶变换DFT后的频谱是共轭对称的。