2、DSP基础

2.1 DSP 基本运算

模拟数据——》采样——》量化——》编码——》数字信号

线性卷积( linear convolution)

$y(n)=\sum_{m=-\infty}^{\infty} x(m) h(n-m)=x(n) * h(n)$

卷积的计算方法

卷积在按照定义计算可分为四步:翻褶、移位、相乘、相加

第二种方法比较简单但不太推荐
如下:

在数字信号处理当中 信号通过一个线性时不变系统被抽象为一个卷积操作

圆周移位(circular shift)

  • 等价于经过周期延拓,平移后加窗

圆周卷积(circular convolution)

  • 如果$x_1(n)$和$x_2(n)$ 都是长度为N的有限长序列
  • $X_1(k)=\operatorname{DFT}\left[x_{1}(n)\right] \quad X_{2}(k)=\operatorname{DFT}\left[x_{2}(n)\right]$
  • 且 $Y(k)=X_{1}(k) X_{2}(k)$
    那么定义为$x_1(n)$和$x_2(n)$的圆周卷积。

从定义也可以看出DSP种那个经典的结论:时域上的卷积为频域的乘积,这里的卷积是指圆周卷积操作!!

注意:与线性卷积相比,圆周卷积多了周期延拓和取主值序列两个步骤。因此必须指定圆周卷积的点数N。
N也叫主值区间,做圆周卷积时,这个参数时必要的

由于卷积运算相当复杂,所以当数据比较长时求卷积的操作等价于:先将两个输入数据分别求DFT转到频域在相乘,再IDFT 转到时域,这样来求卷积,大大减少时域卷积的运算量。

但是一般我们要的是线性卷积的结果,怎么通过圆周卷积求线性卷积呢? 发现当做N2点的圆周卷积时,N1>=N2时,圆周卷积的N1-N2+1个点与线性卷积相同,可以通过补零的操作 转换。

线性相关(liear correlation)

$r_{x y}(m)=\sum_{n=-\infty}^{\infty} x(n) y^{*}(n-m)$

相比于卷积的式子:少了翻褶的操作,淡多了一个求共轭的操作

圆周相关(circular correlation)

前面与圆周卷积条件相同
如果$R_{x y}(k)=X(k) Y^{}(k)$
$r_{x y}(m)=I D F T\left[R_{x y}(k)\right]=\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)$
称$r_{x y}(m)$是$x(n)$和$y(n)$的圆周相关。

圆周相关与线性相关关系
一般的,如果两个有限长序列的长度为N和 N2,且满足N≥ N2,则有圆周相关的N-N2+1个点,与线性相关的结果一致。(因为少了翻褶操作)

补充

卷积神经网络 卷积
二维卷积:
$h(i, j)=\sum_{u} \sum_{v} f(u, v) g(i-u, j-v)$

举例来说就是
f是输入二维的数据,g是卷积核
$f=\left[\begin{array}{ll}f_{0,0} & f_{0,1} \\ f_{1,0} & f_{1,1}\end{array}\right]
\quad g=\left[\begin{array}{ll}g_{0,0} & g_{0,1} \\ g_{1,0} & g_{1,1}\end{array}\right]$

二维卷积举例

步骤就是

  • 先把输入的f矩阵扩展,扩展大小根据g决定,如g是一个N*M的阵,上(下)层就多N-1行,左右就多M-1列,填零。
  • 把g矩阵按各个维度翻转(如果不翻转就是二维的互相关操作
  • 做类似于互相关(对应元素相乘再相加)的操作
    • $h_{0,0}=0g_{1,1}+0g_{1,0}+0g_{0,1}+f_{0,0}g_{0,0}$
    • $h_{0,1}=0g_{1,1}+0g_{1,0}+f_{0,0}g_{0,1}+f_{0,1}g_{0,0}$
    • ……

彩色图片有R(red)G(green)B(blue)三个通道,每个通道取值为[0-255]
灰度图片 与RGB换算关系: $gray=R0.299+G0.587+B*0.114$

二维卷积应用举例:
Prewitt算法的边缘检测

  • 步骤一、获取卷积核
    • 横向边缘检测卷积核
      $f1=\left[\begin{array} {} 1 & 1 & 1 \\ 0 & 0 & 0 \\ -1&-1&-1\end{array}\right]$
      与他做卷积相当于 上下两行(隔一行)做差,
    • 同理可得横向边缘卷积核
      $f2=\left[\begin{array} {} 1 & 0 & -1 \\ 1 & 0 & -1 \\ 1&0&-1\end{array}\right]$
  • 步骤二: 将图像分别与卷积核做卷积 假设 得到 G 和G’
  • 步骤三:将G与G’各个元素做取绝对值 得到|G| |G’|
  • 步骤四:最终 用$P(x,y)=max\{ |G(x,y)| ,|G’(x,y)|\}$ 得到边缘检测图

此外:CNN中的卷积 ,在前向传播时采用与卷积核的互相关,反向误差传播采用二维卷积

2.2、采样定理

时域采样等价于频域上的对信号的周期延拓, 延拓周期为$f_s=\frac{1}{T}$
(以$\Omega$为单位时,延拓周期是$\Omega_s=\frac{2\pi}{T}$)
著名的奈奎斯特采样频率:能无失真恢复的条件:采样频域大于信号最高频率的两倍

采样定理的推导

采样信号可以视为原始信号与 周期冲击信号的乘积

等式两端取DTFT

这一步的推导见下面
首先要求$\delta_{T}(t)$的 傅里叶变换是什么,在离散域就是DTFT,
由于$\delta_{T}(t)$是周期信号,那么 他在时域上就可以写成傅里叶级数的形式:

  • $\delta_{T}(t)=\sum_{k=-\infty}^{\infty} A_{k} e^{j k \Omega_{s} t}$
    其中 $A_{k}$ 响应频率 波 的幅度、$\Omega_{s}$ 是采样频率
    $\begin{aligned} A_{k} &=\frac{1}{T} \int_{T} \delta_{T}(t) e^{-j k \Omega_{s} t} d t=\frac{1}{T} \int_{T} \sum_{m=-\infty}^{\infty} \delta(t-m T) e^{-j k \Omega_{s} t} d t \\ &=\frac{1}{T} \int_{T} \delta(t) e^{-j k \Omega_{s} t} d t=\frac{1}{T} \end{aligned}$ 倒数第二个等号:因为在 一个周期内,只有一个冲激信号

那么 对$\delta_{T}(t)$的 DTFT 相当于对$\delta_{T}(t)=\frac{1}{T} \sum_{k=-\infty}^{\infty} e^{j k \Omega_{s} t}$求DTFT
而$DTFT\{e^{j k \Omega_{s} t}\}=2\pi\delta(j(\Omega-k\Omega_s))$
所以 $DTFT\{\delta_{T}(t)\}=\frac{2\pi}{T}\sum_{k=-\infty}^{\infty}\delta(j(\Omega-k\Omega_s))$
将此结果与$X_{a}(j \Omega)$ 做卷积 就可以得到上式采样定理的结果

对于一个16kHz 的语音数据,将其降采样到8kHz

  • 采用抽取的方式降采样
  • 但是抽取前一定要通过一个抗混叠滤波器(因为降采样会频谱会扩展,有可能发生频谱混叠) 举例

采样定理的延申——“空域采样定理”
| 时域 | 空域 |
| —— | —— |
| 时域采样序列(冲击函数序列) | 麦克风阵列 |
| 采样率$fs$ | 麦克风之间的间距$d$ |
| 信号的最高频率 $fh$ | 信号最小波长$\lambda_{min}$ |
| $fs>2f_h $采样定理 | $d<\lambda_{min}/2$ 也叫半波长理论|

傅里叶变换

傅里叶级数

本质上可以视为 把一个周期信号 用一系列正弦余弦波表示,整数倍频率的正弦余弦波可以视为 一组标准正交基, 正交基的系数可以通过”相关操作”(或者说内积的方式)求得

这里说的系数$X\left(j k \Omega_{0}\right)$系数(相当于上一小节采样定理推导中的$A_k$,当信号定下来以后只与$k$有关)通过下式求得:

第一个式子就相当于求 上一小节 傅里叶级数的 系数 的公式 意义上:仍然是通过内积的方式,“抽取”对应频率分量的系数。

与傅里叶级数不同的是,由于时域信号非周期,因此频域中是连续谱

离散时间傅里叶变换(DTFT)

离散非周期信号x(n)的DTFT可以表示为:

注意,这里不再采用模拟频率中的大写$\Omega$,而是采用小写的$\omega=2\pi$,
因为在连续信号不涉及采样
$\Omega=2\pi f=2\pi/T$ 一般不会写成$\Omega=2\pi f_s=2\pi/T_s$ ,因为f 或者T 是连续信号本身的属性,不是采样频率,或者采样周期。

连续信号经过采样后变成了离散信号,所以 离散(采样)信号本身是带有采样频率这一隐藏属性 故采用归一化的频率$\omega=\Omega/f_s=2\pi f/f_s$ $f$是信号本身的频率,根据采样定律,信号本身最高频率不能超过采样频率的一半(否则就有混叠),所以$\omega$的取值范围只能是{[$-\pi$,$\pi$]. 所以研究数字信号的频域的时候只用研究[$-\pi$,$\pi$]即可。(很容易得$X\left(e^{j \omega}\right)$s是一个周期为$2\pi$的函数,其他周期都是[$-\pi$,$\pi$]的周期延拓)

PS:DTFT 与 傅里叶级数形式上非常像,其实这两个就是一对正反变换

离散傅里叶变换 DFT

也叫时间离散、频域离散的傅里叶变换
与DTFT的区别就是将 DTFT研究的非周期信号改为研究周期信号,频域变成了离散信号

DFT针对有限长信号或者周期信号
DFT相当于对DTFT中的正变换加以采样,造成时域信号的周期性,因此时域信号应限制在一个周期内。凡是用到离散傅里叶变换的时候,有限长序列都是作为周期序列的一个周期来表示的,都隐含有周期性意义。

总结:
一个域上的离散性对应另一个域的周期性
一个域上的周期性对应另一个域的离散性

离散傅里叶变换也可以用矩阵来表示

那么DFT以及IDFT可以表示为

总结

注意:

  • 面对四种傅里叶变换时,要用一种”抽取”的思想看待所有公式,
  • 离散、周期 的关系

2.3、傅里叶变换的几个问题

频谱泄露

频谱泄漏是指由于信号截断造成的原始信号频谱扩散现象。

产生频谱泄漏的原因是对信号的截断。信号的截断相当于在原始信号z(n)与一个窗函数u(n)相乘,在频域中相当于各自频谱的卷积过程。卷积的结果造成原始信号频谱的“扩散”(或拖尾、变宽),这就是频谱泄漏。

加窗是因为DFT只能对有限长或者说周期信号进行变换,对于后者还具体分为周期截断和非周期截断,非周期阶段会造成频谱泄露,可以采用不同的窗函数来缓解频谱的泄露

所以 在对语音信号分帧加窗 的过程中避免使用频域拖尾严重的窗函数,采用如汉明窗之类的窗函数:
$w_{r e c}(n)=R_{N}(n)$
$w_{\text {hamming }}(n)=\left[0.54-0.46 \cos \left(\frac{2 \pi n}{N-1}\right)\right] R_{N}(n)$

栅栏效应

因为DFT计算频谱只限制在离散点上的频谱,也就是F0的整数倍处的谱,而无法看到连续频谱函数,这就像通过一个“栅栏”观看景象一样,只能在离散点的地方看到真实景象。这种现象称为“栅栏效应”。

减小栅栏效应的方法就是要是频域抽样更密,即增加频域抽样点数,就好像距离“栅栏”的距离边远一些。在不改变时域信号的情况下,必然是在时域信号末端补零。补零后的时域数据,在频谱中的谱线更密,原来看不到的谱分量就有可能看到了。

语音信号DFT的共轭对称性

时域中的语音信号,经过离散傅里叶变换DFT后的频谱是共轭对称的(因为语音信号是实信号)