热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

卷积的物理意义_傅里叶变换系列学习(5)如何正确理解卷积

为了进一步阐述傅里叶系列,本章引入了新的知识点,函数和卷积,为了引入这两个东西,我们又有必要了解一下线性时不变系统ÿ
0e46a8adf545c30436d141461030381f.png

为了进一步阐述傅里叶系列,本章引入了新的知识点,

函数和卷积,为了引入这两个东西,我们又有必要了解一下线性时不变系统(LTI),本章的知识点好像有点多啊。

信号与系统里面的惯例写法:

连续信号:x(t)

离散时间信号:x(nT)

离散信号:x[n]

连续频域:

离散频域:X[n]

以上,n都是整数,其他数是实数。

时域信号都用小写,频域信号都用大写,离散信号用[],非离散信号用()

1. LTI( Linear Time Invariant)

我们只讨论LTI,为什么? 1. 难,一般人研究不了;2. LTI足以应付大部分系统。需要注意的是,如果你在非LTI系统中,那么LTI的特性万万不要轻易使用。

1.1 先看linear

线性,就是线性代数里面的线性。数学家喜欢用公式描述线性变换。

连续信号:

对于一个系统,

的响应是
,
的响应是
,对于输入信号
,如果系统的响应是
,则称系统是线性系统。

离散信号:(把上面的连续信号换成离散信号)

对于一个系统,

的响应是
,
的响应是
,对于输入信号
,如果系统的响应是
,则称系统是线性系统。

线性的概念,数学上就是输入乘以标量,输出也乘以标量;对于信号来说,输入信号幅度变大多少倍,输出信号也变大多少倍;

线性的概念,还有一个就是叠加的概念;把两个或多个信号叠加,系统的响应等于原先各个信号响应的叠加。

1.2 时不变(Time-invariant)

时不变系统就是系统的响应不依赖于当前的时间。打个比方,我在早晨9点打开电脑,电脑开机,这个响应,跟我晚上10点开机的响应是一样的;电脑不会因为开机的时间不同而响应不同,这就叫时不变。再打个比方,我上午9点开机,系统正常开机;晚上开机的时候,因为电脑进水,开机失败,这样的系统就变成了时变系统了;系统因为时间不一样,对于同一个输入,响应不一样。

数学家还是喜欢用简单就是美的公式描述:

信号

的响应是
,如果
的响应是
,则系统是
时不变系统;

对应的

信号

的响应是
,如果
的响应是
,则系统是
时不变系统;

离散域的时不变也有的地方称为移不变

当然了,有人会从哲学的高度讲“人不能两次踏入同一条河流”来否认时不变系统。确实,真正的时不变系统只存在于数学公式,现实世界从来都没有严格的时不变系统,因为长期的看,好的必然变坏,生的必然要死去;所以一般都是假设,短期内,系统是时不变系统。

对于系统的其他特性,暂时先不描述,因为暂时没有用到,需要用的时候再描述。

2.

2.1 离散域

信号

先看看离散域的

信号。
离散域的
信号就是一个只在n=0的时候等于1,其他点都等于0的信号,单从数学上看,美得很。

按照定义,对于离散序列x[n], 很容易得到

更进一步,把上面的1换成任意整数:

显然我们可以看到

函数具备的一个明显的特性,筛选特性,筛选想要的序列,滤到其余序列。更一步,我们每次筛选出的序列中的一个,从
筛选到
,然后再把所有筛选出来的累加起来,又得到了原序列。数学表达式就是:

因为

,所以上面的公式进一步写成

来来回回,上面的公式写的就是信号

可以由信号本身与
信号卷积得到。证明过程就在上面,后面我们再看看什么是卷积。

2.2 连续域

函数

当把这个离散域定义得极好信号扩展到连续函数的时候,似乎很难实现。如何定义对于只在0点有值,非0点都是0的函数?在数学上,似乎是一个可去间断点定义成这个样子。这样的定义对于连续函数来说,显然是没有物理意义的。按照这样的定义,函数的能量是0。在连续域里面,因为只有一个可去间断点,所以能量为0。好了,数学家们经过深思熟虑,给了下面的定义:

显然,它是有能量的,但这也是一个相当变态的定义,从积分意义上讲,函数的面积是1,但是它的宽是0,所以这个函数的高应该是无穷大。想象一下,在时间轴上,一个函数, 从

到t=
的时候都是0;t=0的时候,一下子变成无穷大;然后
的时候,这个函数的值又变成了0。
函数就是这么一个函数。

对于这样的函数,在物理上如何实现,又要用极限大法了。定义一个矩形或者是三角形,然后让它的底边长度趋向于0。显然,物理上不存在这样的信号。

在离散域,

信号具备筛选特性;在连续域呢,我们换一个名词,叫做抽样特性。也是类似的
,由于连续域的
函数还有积分为1的特性,所以又有下面的特性

通过

信号,我们可以抽样出函数
在任意时刻的值。

有了

信号,我们可以把x[n],x(t) 和 x(nT)(已量化) 联系起来,离散信号可以又连续信号采样后量化得到(这里暂时忽略一下量化)。

通过采样和量化,连续的模拟信号变成了离散的数字信号,可以通过数字信号的处理方法进行处理,处理完后,再由数字信号重构称模拟信号,这整个过程就是数字信号处理过程。

3.卷积

终于讲到卷积了。卷积好像也是一个学习的难点。

卷积的介绍,还是先从离散域考虑。

3.1 离散卷积

回到2.1节里面描述的公式:

,这个公式显然是成立的,当你把右边的sigma求和展开时,自然等于左边。当时我就说过,这个等式还有一个重要的意义就是它表示一个卷积公式,表示的是序列x[n]和
信号卷积后,还等于自身。

关注这个公式,第一项和第二项的系数和是n,也就是序列x[n]的n,然后等式右边经过卷积运算,k没有了,最后只剩下n。

在此基础上,把序列x[n]输入到系统H,得到的输出是y[n];假设

代入

得到,

因为是线性系统,

表示幅度,所以

,亦即
(这里是因为时不变特性),那么就有了著名的卷积公式:
也可以写成

其中h[n]为系统对

信号的响应,也称h[n]为系统的冲击响应。

下面从字面上解读一下这个公式。

在解读卷积公式之前,先厘清概念,概念不厘清,永远都是稀里糊涂的。

h[n]是表示一个序列还是序列中某个特定的项。对于n的不同理解,卷积的理解也完全不一样。当把h[n]看成一个特定项的时候,有了网上的各种非常精彩的解释,比如掷色子/打肿脸等,核心都是反折,平移,相乘,累加。我再简单重复一遍。

3.1.1 y[n],h[n]标识为某个特定项

在这个前提下,我们举个简单的例子,想象一下下面的图中的输入信号x[n],系统的冲击响应是h[n]。

251f9e300d491a85efa27280125085cc.png

在这个系统中,输入信号有3个有效值,x[0],x[1],x[2]分别表示时刻0,时刻1和时刻2的输入;冲击响应有两个h[0]和h[1],h[0]表示系统0延迟的响应,h[1]表示系统延迟为1的响应。

step 0,计算y[0],我们只需要关注x[0]信号的h[0]的响应x[0]h[0],输入在0时刻,延时为0,所以系统在0时刻的响应y[0]=x[0]h[0];(这里注意到信号的输入时刻与delay的时刻之和为0)

step 1,计算y[1],我们需要关注系统在0时刻的输入x[0]信号,它有一个延迟为1的响应x[0]h[1];系统在1时刻的输入x[1]信号,它有一个延迟为0的响应x[1]h[0];没有其他信号的响应能满足在时刻1有输出,所以y[1]=x[0]h[1]+x[1]h[0](这里注意到信号的输入时刻与delay的时刻之和为1)

step 2,计算y[2],0时刻的输入,由于没有delay为2的响应,所以0输入就不用考虑了;对于时刻1的输入,它的0 delay的响应,显然不会在时刻2到达系统,而对于它的1 delay的响应则对y[2]有贡献x[1]h[1];对于时刻2的输入,它的0 delay的响会在时刻2有输出有贡献,贡献值是x[2]h[0];此外没有其他信号的响应能满足在时刻2有输出,所以y[2]=x[1]h[1]+x[2]h[0](这里注意到信号的输入时刻与delay的时刻之和为2)

step3,以此类推,我们可以得到y[3]=x[2]h[1]+x[3]h[0]。

更进一步,对于时刻n,对该时刻有贡献的响应是...,

,
,
,
,...,
,...,累加起来也就是

3.1.2 y[n],h[n]标识为序列

  1. 在这里,n是一个变量,所以x[n]是一个序列,其他的符号,比如x[k],就认为是某个特定的项。
  2. 有了第一条,我们再看x[n-k],这就是把序列x[n]延时k个单位;相反,x[n+k]就是x[n]序列提前。
c258e8eed3bf8b45f2909c5250df9b8c.png

再来看公式

,从时刻0开始算起,x[0]表示0时刻,强度为x[0]的冲击信号,因为
的冲击响应是h[n],那么强度为x[0]的冲击信号所产生的响应就是x[0]h[n];类似的,x[k]表示k时刻的强度为x[k]的冲击信号,它的响应比如也是要延迟k的单位,即x[k]h[n-k];由数学归纳大法,我们就可以把所有信号的响应都加起来
,
,
,...,
,....,即

举个栗子

对于某个系统,冲击响应是

,也就是一个冲击,经过系统后变成了两个冲击 。

依旧使用上面的x[n],然后

,我们一步步的做乘法,然后做加法,得到下面的图片。
46d62169237dddcd456b92a1a4caf066.png

从上面的图中,我们可以看到,x[0]h[n-0]计算得到的是y[0]和y[1]的一部分,x[1]h[n-1]计算得到的是y[1]和y[2]的一部分。可见,在不同前提条件下,对同一个公式我们有不同的理解。真正理解后,其实会发现,两种理解本质是一样的。

换个视角

对于输入时h[n],冲击响应是x[n]的系统,它的输出y[n]是什么?

f38d56f32fa80bce043ad145ad88a89b.png

相当于我们再次复习了一遍图解的过程,大家欣喜的看到

这就是卷积的交换律。

其实,数学家不需要画这么多图,数学家最擅长的就是公式变换,且看:

,令m=n-k,则k=n-m,代入就得到
,所以

简单就是美,数学家从来不需要多余的东西。

另外,对于长度是M和N的序列,卷积后,长度是M+N-1,比如上面的例子,M=2,N=3,卷积后序列有效长度是4。证明很简单,对于长度为M的序列,它需要delay (0次,1次,...,N-1次),最终长度就是M+N-1。

下面再看连续域

3.2 连续卷积

3.2.1 定义

这个小节,我们从定义出发。

对于系统H,

的响应是
,记为

相应的,对于

,系统的响应是

在2.2小节,我们得到了

,在这里继续运用一下数学的小技巧,尝试一下代换:
,
,我们得到
,由于
,所以
,代入到
就得到

因为我们的系统是线性的,

表示幅度,所以有

又因为我们的系统是时不变的,并且

,所有
,所以继续有

上面的公式就是连续域的卷积公式。

3.2.2 离散到连续,运用极限大法

,先回顾离散公式。换成连续域的时候,我们把输入x[n]序列中的特定项x[k]换成高
宽度为
的小脉冲。对于离散的冲击响应
,它的输入是面积为1的
信号;对应到连续域,我们把面积为1的连续
信号,它的冲击响应是
,所以对照离散公式,一一替换,我们就可以得到
,令
,即可得到

更进一步,如果系统是因果系统(在没有输入的情况下,没有输出,这样的系统就是因果系统),因果系统的t时刻的输出不取决于t时刻之后的输入。

在因果系统下,

这个公式可以这样记忆:系统某个时刻的输入

,对于这个输入相对于时刻0已经delay了
个时间单位,因此它的响应也应该delay相同的时间,就是
,把所有的时刻的输入累加求和,即得。

这个记忆方法,其实,跟我在3.1.2中描述离散卷积的方法,一样。

下次再撩。



推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • PHP图片截取方法及应用实例
    本文介绍了使用PHP动态切割JPEG图片的方法,并提供了应用实例,包括截取视频图、提取文章内容中的图片地址、裁切图片等问题。详细介绍了相关的PHP函数和参数的使用,以及图片切割的具体步骤。同时,还提供了一些注意事项和优化建议。通过本文的学习,读者可以掌握PHP图片截取的技巧,实现自己的需求。 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • windows便签快捷键_用了windows十几年,没想到竟然这么好用!隐藏的功能你知道吗?
    本文介绍了使用windows操作系统时的一些隐藏功能,包括便签快捷键、截图功能等。同时探讨了windows和macOS操作系统之间的优劣比较,以及人们对于这两个系统的不同看法。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 大连微软技术社区举办《.net core始于足下》活动,获得微软赛百味和易迪斯的赞助
    九月十五日,大连微软技术社区举办了《.net core始于足下》活动,共有51人报名参加,实际到场人数为43人,还有一位专程从北京赶来的同学。活动得到了微软赛百味和易迪斯的赞助,场地也由易迪斯提供。活动中大家积极交流,取得了非常成功的效果。 ... [详细]
  • 生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
    一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ... [详细]
author-avatar
東東1959
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有