信号部分——学习报告
王世龙
文章目录
0 综述
目前已经学习了视听觉信号处理这门课的第一部分——信号基础,虽然课时很短,但是学到的东西却一点也不少。在大一的数字逻辑课程上,应该是第一次接触信号这些概念,只是有个大概的概念。之后大二有学过自动控制原理,学的信号知识就比较多了,冲激信号,二阶系统响应等等,当时甚至用过拉普拉斯变换;所以对信号这部分也就不算两眼一抹黑,啥都不会了。
在这一部分中,我觉得最重要的部分要算信号分解与变换这块的知识,比如傅里叶变换,z变换等。这些变换内容很多,还有各种变体,由于课时原因,老师在上课只能给我们开个头,过一遍概念,实际应用;最终还需要我在课余时间自己多学习这方面知识,加深理解。我也会在这篇学习报告中,着重讨论这方面的知识。
这几周的学习,相当于老师带我入门,信号部分是视听觉工作的基础中的基础,以后我还会涉猎这方面相关的知识,加深理解,拓宽见识。
1 信号
信号其实就是信息的载体、表现形式。
一般我们身边可以接触到的信号有:
-
自然和物理信号:语音、图像、生理信号等
-
人工产生的信号:雷达信号、通讯信号、医用超声信号等
人们通常想获得的是信息,但是一般得到的都是信号,所以对信号的表示,处理就尤为重要。
1.1 信号分类
按自变量个数分类:一维,二维,n维
按确定性:确定信号,随机信号
按周期性:周期信号,非周期信号
模拟信号、抽样信号、数字信号
时间连续信号、时间离散信号
等等…
这块了解即可
1.2 典型信号
- 正余弦信号:
f ( t ) = K s i n ( ω t + θ ) f(t)=Ksin(\omega t+\theta) f(t)=Ksin(ωt+θ)
在信号系统分析里,sin,cos信号统称为正弦信号!!!
并且信号系统中正弦信号就是用cos函数定义的
- 指数信号
f ( t ) = K e α t f(t)=Ke^{\alpha t} f(t)=Keαt
- 复指数信号
f ( t ) = K e s t ( s = σ + j ω ) f(t)=Ke^{st}\ \ \ \ \ (s=\sigma+j\omega) f(t)=Kest (s=σ+jω)
实际不存在,但可以用于描述各种信号。
σ>0(σ<0)时,增幅(衰减)振荡正、余弦信号;σ=0时等振幅振荡正、余弦信号;ω=0时,实指数信号;σ=0且ω=0时,直流信号。
- 高斯信号
f ( t ) = K e − ( t / τ ) 2 f(t)=Ke^{-(t/ \tau )^2} f(t)=Ke−(t/τ)2
- 单位阶跃信号
u ( t ) = { 0 t < 0 1 t > 0 u(t)= \begin{cases} 0 &t<0\\ 1 &t>0 \end{cases} u(t)={01t<0t>0
- 单位冲击信号
δ ( t ) : { ∫ − ∞ ∞ δ ( t ) = 1 δ ( t ) = 0 ( t ≠ 0 ) \delta(t): \begin{cases}\int_{-\infty}^{\infty}\delta(t)=1\\\delta(t)=0\ (t\ne0)\end{cases} δ(t):{∫−∞∞δ(t)=1δ(t)=0 (t=0)
描述自然界中那些发生后持续时间很短的现象。
单位冲击信号具有很多特殊的性质
比如:
抽样特性: ∫ − ∞ ∞ f ( t ) δ ( t − t 0 ) d t = f ( t 0 ) \int_{-\infty}^{\infty}f(t)\delta(t-t_0)dt=f(t_0) ∫−∞∞f(t)δ(t−t0)dt=f(t0)
1.3 信号运算
- 四则运算:四则运算后的信号在任意一点的取值定义为原 信号在同一点处函数值作相同四则运算的结果
- 例:冲击串*连续信号=抽样信号
- 时移运算:
f ( t ) → f ( t − b ) f(t)\to f(t-b) f(t)→f(t−b)
- 压阔运算:
f ( t ) → f ( a t ) f(t)\to f(at) f(t)→f(at)
时移和压阔运算在后面也是各种被提到
- 积分微分运算:大一高数就讲过,不在赘述
- 卷积运算:卷积部分详情参见后面的 [卷积运算](#3 卷积运算)
2 系统
系统是若干相互作用和相互依赖的事物所组成的 具有特定功能的整体。
我认为“系统”可以看作是一个过程,它以一些信号作为输入,并以一定特征输出另一些信号(如下图)
本门课程重点用到的是线性时不变系统(LTI):
- 线性;
- 时不变性:
e ( t ) → r ( t ) ⇒ e ( t − t 0 ) → r ( t − t 0 ) e(t)\to r(t)\Rightarrow e(t-t_0)\to r(t-t_0) e(t)→r(t)⇒e(t−t0)→r(t−t0)
一些自己的理解:
线性的优点是可以将输入信号分解为一些基本信号的线性组合,这些基本信号对应的输出信号很容易得到,然后进一步就可以求得各自输出的线性组合了。(所以傅里叶变换就很适用)
线性时不变(LTI)系统中:对输入信号的响应可以通过求取输入信号与系统的冲击响应的卷积得到(这个我们在下一节卷积运算中还会提到)。也就是说,只要知道了冲激响应,就能完整地表征整个系统的特性了。
3 卷积运算
3.1 定义与性质
卷积定义:
f
1
(
t
)
∗
f
2
(
t
)
=
∫
−
∞
∞
f
1
(
τ
)
f
2
(
t
−
τ
)
d
t
f_1(t)*f_2(t)=\int^\infty_{-\infty}f_1(\tau)f_2(t-\tau)dt
f1(t)∗f2(t)=∫−∞∞f1(τ)f2(t−τ)dt
- 满足交换律,结合律,分配律
- 单位冲击函数的搬移特性
f ( t ) ∗ δ ( t − t 0 ) = f ( t − t 0 ) f(t)*\delta(t-t_0)=f(t-t_0) f(t)∗δ(t−t0)=f(t−t0)
- 卷积微分性质:两个信号卷积的微分等于其中任一信号的微分与另一信号的卷积。
- 卷积积分性质:两个信号卷积的积分等于其中任一信号的积分与另一信号的卷积。
3.2 理解
其实要背过这个运算的公式,性质;那是很简单的。但是要理解什么时候要用它,什么时候适合用它,就需要彻底弄明白它的意义,深层含义。下面是我学到目前为止对卷积的理解
卷积这个概念最初是在线性时不变系统中引入的,其目的是求某一输入信号经线性时不变系统作用后的输出信号。
举个形象的离散卷积例子:
丢骰子:两枚骰子点数加起来是4的概率是多少?
分3种情况:
总的概率为:
f
∗
g
(
4
)
=
f
(
1
)
g
(
3
)
+
f
(
2
)
g
(
2
)
+
f
(
3
)
g
(
1
)
=
∑
m
=
1
3
f
(
4
−
m
)
g
(
m
)
f*g(4)=f(1)g(3)+f(2)g(2)+f(3)g(1)\\ =\sum_{m=1}^3f(4-m)g(m)
f∗g(4)=f(1)g(3)+f(2)g(2)+f(3)g(1)=m=1∑3f(4−m)g(m)
对卷积的意义的理解:
-
从“积”的过程可以看到,我们得到的叠加值,是个全局的概念。以信号分析为例,卷积的结果是不仅跟当前时刻输入信号的响应值有关,也跟过去所有时刻输入信号的响应都有关系,考虑了对过去的所有输入的效果的累积。在图像处理的中,卷积处理的结果,其实就是把每个像素周边的,甚至是整个图像的像素都考虑进来,对当前像素进行某种加权处理。所以说,“积”是全局概念,或者说是一种“混合”,把两个函数在时间或者空间上进行混合。
-
那为什么要进行“卷”?直接相乘不好吗?我的理解,进行“卷”(翻转)的目的其实是施加一种约束,它指定了在“积”的时候以什么为参照。在信号分析的场景,它指定了在哪个特定时间点的前后进行“积”,在空间分析的场景,它指定了在哪个位置的周边进行累积处理。
我们再看回投骰子的例子:
首先,因为两个骰子的点数和是4,为了满足这个约束条件,我们还是把函数 g 翻转一下,然后阴影区域上下对应的数相乘,然后累加,相当于求自变量为4的卷积值,如下图所示:
这就是卷积。
一言以蔽之:卷积其实就是某一作用在某一约束(位置)下的累计效果
4 空间投影变换
其实大一在学线性代数的时候,就比较困惑:行列式,矩阵,到底有什么实际意义呢???当时只是在认真学知识,记公式,记性质,没有好好去理解这些东西内在的关联,深层的意义。在大三分专业后,有几门课对线性代数的要求突然提高,之前基础就不是很牢固,于是我在网上查找相关学习资料,我要特别推荐(3blue1brown)线性代数的本质这个视频,让我彻底学懂了这块知识!
首先你需要知道:矩阵的乘法的几何意义就是空间变换!!!
代表 经过M的变换后变成了 。考虑原空间中的所有向量所构成的空间 ,那么 ,也就是空间 经过 的变换变为了空间 。
所以描述的是空间之间是如何变换的,举个例子:
M
=
[
3
1
1
2
]
M=\begin{bmatrix}3 & 1 \\ 1 & 2\\ \end{bmatrix}
M=[3112]
描述的是从
到
的空间变换
用公式描述为:
[
−
1
3
]
=
M
∗
[
−
1
2
]
\begin{bmatrix}-1 \\ 3\\ \end{bmatrix}=M*\begin{bmatrix}-1 \\ 2\\ \end{bmatrix}
[−13]=M∗[−12]
即:向量
[
−
1
2
]
\begin{bmatrix}-1 \\ 2\\ \end{bmatrix}
[−12]通过M矩阵变换为
[
−
1
3
]
\begin{bmatrix}-1 \\ 3\\ \end{bmatrix}
[−13]
那么, M M M矩阵是如何表示这个变换的呢???
我们观察变换后的空间:
两个基向量分别变为: [ 3 1 ] \begin{bmatrix}3 \\ 1\\ \end{bmatrix} [31]和 [ 1 2 ] \begin{bmatrix}1 \\ 2\\ \end{bmatrix} [12],而 M = [ 3 1 1 2 ] M=\begin{bmatrix}3 & 1 \\ 1 & 2\\ \end{bmatrix} M=[3112]
结论显而易见: M M M矩阵的每一列表示的是变换之后的空间的基向量的坐标
或者可以理解为:变换矩阵 将 映射为什么。(这里默认原空间基向量为标准正交基)。例如上图中变换矩阵 将 映射为 ,因此若在,原坐标系下坐标为 ,即,因此映射为 。计算的时候表示为:
我们来看上课老师讲的一个小例子:旋转矩阵
旋转矩阵需要完成图形的旋转,二维旋转中最简单的场景是绕着坐标原点进行的旋转,如下图所示:
那么我们如何表示这个变换?这就要用到旋转矩阵了
M
(
θ
)
=
[
c
o
s
(
θ
)
−
s
i
n
(
θ
)
s
i
n
(
θ
)
c
o
s
(
θ
)
]
M(\theta)=\begin{bmatrix}cos(\theta) & -sin(\theta) \\ sin(\theta) & cos(\theta)\\ \end{bmatrix}
M(θ)=[cos(θ)sin(θ)−sin(θ)cos(θ)]
我们可以用上面的思想理解:将空间旋转
θ
\theta
θ 角度,即:
i
:
[
1
0
]
→
[
c
o
s
(
θ
)
s
i
n
(
θ
)
]
j
:
[
0
1
]
→
[
−
s
i
n
(
θ
)
c
o
s
(
θ
)
]
i:\begin{bmatrix}1 \\ 0\\ \end{bmatrix} \to\begin{bmatrix} cos(\theta)\\ sin(\theta)\\ \end{bmatrix}\\ j:\begin{bmatrix}0 \\ 1\\ \end{bmatrix} \to\begin{bmatrix} -sin(\theta)\\ cos(\theta)\\ \end{bmatrix}
i:[10]→[cos(θ)sin(θ)]j:[01]→[−sin(θ)cos(θ)]
所以空间中任意向量旋转之后的坐标计算公式如下:
[
x
n
e
w
y
n
e
w
]
=
M
(
θ
)
∗
[
x
y
]
\begin{bmatrix} x_{new}\\ y_{new}\\ \end{bmatrix}=M(\theta)*\begin{bmatrix} x\\ y\\ \end{bmatrix}\\
[xnewynew]=M(θ)∗[xy]
5 信号正交分解
正交函数:
在区间(t1,t2)内的两个函数 ψ 1 ( t ) , ψ 2 ( t ) \psi_1(t),\psi_2(t) ψ1(t),ψ2(t)满足:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L3uisyup-1602599269628)(https://i.loli.net/2020/10/12/2ovUAV984Z6pyYR.png)]
正交函数集:
若n个函数 ψ 1 ( t ) , ψ 2 ( t ) . . . ψ n ( t ) \psi_1(t),\psi_2(t)...\psi_n(t) ψ1(t),ψ2(t)...ψn(t)构成一个函数集,当这些函数在区间(t1,t2)内满足:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4b51Dtxs-1602599269630)(C:\Users\long\Desktop\新建文件夹\捕获1.JPG)]
则此函数集为在区间(t1,t2)的正交函数集。
信号正交分解:
就是将信号f(t)表示成这 n 个正交函数的线性组合。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L8QeYzRS-1602599269631)(https://i.loli.net/2020/10/12/cEeWd4uYgoFUz3T.jpg)]
说明:存在误差,当 n → ∞ n\to \infty n→∞时(完备正交函数集),误差为零。
5.1 傅里叶变换
自我感觉离散傅里叶变换更容易理解一些,就先从离散傅里叶变换(DFT)开始吧
5.1.1 离散傅里叶变换
DFT做了什么?
在长度为N的离散信号中,针对k=(0,1,2…),分别找出在长度N内振动k个周期的三角波分量的权值
在机器学习的课上,老师讲到:内积其实就是求相似程度,内积越大,越相似!
相似度函数如下:
设原信号为 x [ n ] x[n] x[n],要看该信号与长度N内振动K个周期的正弦波的相似度,即 :
我们看看真正的离散傅里叶变换:
可以看到,差距有两点:
- 1,没有sin函数;只跟余弦函数比,会缺少一些信息,比如:相位。
- 2,没有 j j j(复值);其实复坐标只是工具,方便计算和化简(因为可以用欧拉公式)
举个例子:
原信号:
与余弦对比:
与负正弦对比:
所以
X
2
=
10
2
+
j
10
2
X_2=10 \sqrt{2}+j10\sqrt{2}
X2=102+j102
相位为
π
4
\frac{\pi}{4}
4π
注:根据DFT结果求得的相位是相对余弦信号的相位。
总结一下,这里有三种不同得理解:
- 对一段有限长的离散信号,找出它含有的各个频率的正弦波分量。(课本)
- 离散傅里叶变换就是在将时域信号,分解到频域(一组完备正交基得线性组合)
- 是傅里叶变换在时域和频域上都呈现离散的形式,将时域信号的采样变换为在离散时间傅里叶变换(DTFT)频域的采样。
5.1.2 连续傅里叶变换
知道离散傅里叶变换后,相信连续傅里叶变换也不难理解
傅里叶变换的核心是从时域到频域的变换,而这种变换是通过一组特殊的正交基来实现的。我们要找到一个沟通时域和频域的桥梁,也就是一个翻译,让时域和频域能够无障碍的沟通。但是,时域和频域表达的又只能是同一种信息,只是表现形式不同。
傅里叶变换对:
补充:快速傅里叶变换
在实际工程应用中,由于信号都是连续的、无限的,计算机不能处理,于是就有了傅里叶级数、傅里叶变换,将信号由时域变到频域,把一个信号变为有很多个不同频率不同幅度的正弦信号组成,这样计算机就能处理了,但又由于傅里叶变换中要用到卷积计算,计算量很大,于是就有了快速傅里叶变换,大大降低了运算量,使得让计算机处理信号成为可能。
快速傅里叶变换是傅里叶变换的快速算法而已,将离散傅里叶变换的复杂度从 O ( n 2 ) O(n^2) O(n2)降到 O ( n l o g n ) O(nlogn) O(nlogn),对于硬件实现特别有利。
5.2 拉普拉斯变换
连续时间傅里叶变换与拉普拉斯变换:
连续时间傅里叶变换的公式是:,这里的是实数。
傅里叶变换要求时域信号绝对可积,即。
为了让不符合这个条件的信号,也能变换到频率域,我们给x(t)乘上一个指数函数,为(满足收敛域的)任意实数。
可以发现,这个函数,就满足了绝对可积的条件,即。
于是这个新函数的傅立叶变换就是:,化简得。显然是一个复数,我们把这个复数定义为一个新的变量——复频率,记为s。
于是便得到了拉普拉斯变换的公式:
所以拉普拉斯变换解决了不满足绝对可积条件的连续信号,变换到频率域的问题,同时也对“频率”的定义进行了扩充。
所以拉普拉斯变换与连续时间傅里叶变换的关系是:
拉普拉斯变换将频率从实数推广为复数,因而傅里叶变换变成了拉普拉斯变换的一个特例。当s为纯虚数时,x(t)的拉普拉斯变换,即为x(t)的傅里叶变换。
5.3 z变换
离散时间傅里叶变换(DTFT)与Z变换的关系:
DTFT的公式是,这里的是连续变化的实数。
同样的,DTFT需要满足绝对可和的条件,即。
为了让不满足绝对可和条件的函数x[n],也能变换到频率域,我们乘一个指数函数, a a a为(满足收敛域的)任意实数。
于是这个新函数的傅立叶变换就是:,化简得:,显然,是一个极坐标形式的复数,我们把这个复数定义为离散信号的复频率,记为z。
则得到Z变换的公式:。
Z变换解决了不满足绝对可和条件的离散信号,变换到频率域的问题,同时也同样对“频率”的定义进行了扩充。
所以Z变换与离散时间傅里叶变换(DTFT)的关系是:
Z变换将频率从实数推广为复数,因而DTFT变成了Z变换的一个特例。当z的模为1时,x[n]的Z变换即为x[n]的DTFT。