卷积外文翻译资料

 2023-09-05 09:47:42

英语原文共 666 页,剩余内容已隐藏,支付完成后下载完整资料


卷积

卷积是一种将两个信号相结合以得到第三个信号的数学方法。它是数字信号处理中最重要的运算方法之一。用脉冲分解的方法,系统可以由一个叫做冲激响应的信号来描述。卷积非常重要,因为它涉及3个信号:输入信号、输出信号和冲激响应。本章从两个不同的角度描述了卷积:输入端算法和输出端算法。卷积为数字信号处理提供了数学架构,本书中再没有比这更重要的技术了。

6.1 函数和冲激响应

前一章描述了信号如何被分解为一些叫做脉冲序列的组合。脉冲序列是只有一个非零值而其余的各点都是零的信号。实际上,脉冲分解提供了一种一次仅分析一个样点的有效方法。前一章还介绍了DSP的基本概念:输入信号被分解为简单的相加的部分,每一部分都通过一个线性系统,然后将最后的结果叠加在一起。这种分开处理得到的信号和直接将原信号通过线性系统得到的信号是相同的。有许多不同形式的分解,但有两种信号分解方法是常用的:脉冲分解和傅里叶分解。当运用脉冲分解时,这一过程就可以用卷积这种数学运算来描述。本章(和以后的大部分章节)将主要处理离散信号。卷积也可以用于连续信号,但数学运算会更复杂。在第13章中我们会看到如何处理连续信号。

图6-1定义了DSP中的两个重要的术语。首先是delta;函数,它是用希腊字母表示的。delta;函数是一个归一化的脉冲序列,只在0样点处有一个非零值为1,其余各样点的值都是0。由于这个原因,delta;函数经常被叫做单位脉冲。

第二个术语是在图6-1中定义的冲激响应。顾名思义,冲激响应就是当输入信号是delta;函数(冲激函数)时的输出信号。如果两个系统在某些方面有些不同,那么它们肯定具有不同的冲激响应。就像输入和输出信号经常表示为x[n]和y[n]一样,冲激响应经常被表示为h[n]。当然,也可以根据情况取一个描述性的名字。例如,可以使用f[n]表示一个滤波器(filter)的冲激响应。

任何一个脉冲都可以由一个delta;函数的移位和比例增减来表示。设想一个信号a[n],只有样点delta;的值是-3,其余各样点的值都为0。这相当于将delta;函数右移8个样点然后再乘以-3。以等式表示就是:a[n]=-3 [n-8]。一定要理解这一表述,因为在几乎所有的DSP中都会用到。

如果一个系统的输入是一个脉冲,例如-3[n-8],那么系统的输出是什么呢?这就是要应用到齐次性和移位不变性的地方。输入信号的移位和按比例增减,会导致输出信号产生同样的变化。如果输入delta;[n]时输出是h[n],那么输入为-3[n-8]时,输出为-3h[n-8]。总之,输出信号就是对冲激响应进行和输入端delta;函数相同形式的移位和比例增减得到的。如果知道了一个系统的冲激响应,就会立刻知道它对于任意脉冲的响应。

6.2 卷积

让我们总结一下这种用来理解一个系统如何把输入信号转变为输出信号的方法。首先,输入信号可以被分解为一系列脉冲,每一个脉冲都可看成是delta;函数通过移位和比例增减得到的。第二步,每个脉冲的输出是冲激响应通过与输入相同的移位和比例增减得到的。第三步,总的输出信号可以通过将这些移位和比例增减后的冲激响应相加得到。换句话说,如果我们知道了一个系统的冲激响应,那么对于任何输入信号我们都能计算出系统的输出信号。这意味着我们了解了系统的全部特征。对于一个线性系统的特性,我们没有什么其他可以了解的了。(但是在后面的章节中我们将给出用不同形式表述的这一信息)

在一些应用场合中冲激响应会有一些不同的名字。如果系统是一个滤波器,那么冲激响应可以叫做滤波器内核、卷积核或直接简称为核。在图像处理中冲激响应叫做点扩散函数。虽然这些术语用于稍微不同的方式下,但表示的都是同一个事物,即当输入是delta;函数时系统的输出。

卷积是一种规范的数学运算,就像乘法、加法和积分一样。加法把两个数合在一起形成第三个数字,而卷积把两个信号合在一起形成第三个信号。卷积应用于很多数学领域,例如概率和统计学。在线性系统中,卷积用于描述三个重要信号的关系:输入信号、冲激响应和输出信号。

图6-2所示为卷积用于线性系统的符号,输入信号x[n]进入一个冲激响应为h[n]的线性系统,产生的输出信号为y[n]。该过程可以用等式x[n] *h[n] = y[n]来表示。用语言描述为,输入信号和冲激响应的卷积等于输出信号。与加法由加号( )表示、乘法由叉号(x) 表示类似,卷积由星号(*)表示。不凑巧的是,很多编程语言也用星号代表乘法。所以在般情况下,星号在编程语言中表示乘法,在等式中表示卷积,不要混淆。

如图6-3所示为卷积在低通和高通滤波过程中的应用。输入信号由两部分的和组成:一个正弦波的3个周期(表示高频)和一个缓慢斜升信号(由较低的频率组成)。在图6-3a中,低通滤波器的冲激响应是一个平滑的弧形,使得只有变化缓慢的斜升信号才可以通过并到达输出端。类似地,图6-3b中的高通滤波器允许变化较快的正弦信号通过。

图6-4描述了卷积用于信号处理的另外两个例子。在图6-4a中,是一个将信号的波峰和波谷反转,并降低信号幅值的反相衰减器。如图6- 4b所示为离散导数(也叫一阶微商),使得输出信号和输入信号的坡度有关。

注意图6-3和图6-4中信号的长度。输入信号有81个样点,而每个冲激响应由31个样点组成。在大部分DSP应用中,输入信号长度可达数百、数千,甚至数百万个样点。冲激响应通常会很短,大约有几个到几百个样点。卷积中的数学并不用来限制输入或冲激响应的长度,而是用来指定输出信号的长度。输出信号的长度等于输入信号的长度加上冲激响应的长度再减1。对于图6-3和图6-4中的信号,每个输出信号长度为81 31-1=111个样点。输入信号的抽样序号从0到80,冲激响应抽样序号从0到30,输出信号抽样序号从0到110。

现在我们来详细了解一下卷积中的数学。卷积应用在数字信号处理中可以采用两种不同的观点来理解。第一种观点是从输入信号的角度来看卷积。这包括分析输入信号的一个样点是如何对输出端得到的多个样点产生影响的。第二种观点是从输出信号的角度来看卷积。这需要研究输出信号的一个样点是否接收到输入信号多个样点的信息。

请注意,这是同一数学运算的两种不同思维方式。第一个观点是非常重要的,因为它提供了一个如何将卷积归类到DSP领域的概念性的认识。第二种观点描述了卷积的数学理论。这是在DSP中会遇到的最困难的问题之一:如何使概念性的理解和复杂的数学理论很好地衔接起来。

6.3 输入端算法

如图6-5所示为一个简单的卷积问题: 一个9点的输入信号x[n],通过一个冲激响应h[n]为4点的系统,得到一个9 4-1 =12点的输出信号y[n]。用数学术语描述就是,h[n]卷积x[n]得到y[n]。卷积的第一种观点是基于DSP的基本概念:分解输入信号,并将分解而成的各部分分别通过系统,再综合最后的结果得到最终的输出信号。在这个例子中,输入信号的9个样点中的每一个都为最终的输出信号贡献了一个已进行移位和比例增减的冲激响应。这9个信号如图6-6所示。将这9个信号加在一起即构成输出信号y[n]。

让我们详细看一下这9个信号中的一部分。我们从样点数为4的输入信号(假设为x[4]开始。这个样点的标号是4,值为1.4。当信号被分解时,这将变成一个脉冲,表示为:1.4delta;[n-4]。通过系统后,输出部分将变成1.4h[n- 4]。这个信号在图6-6所示的9个信号最中间的方框中。注意到这是冲激响应h[n]乘以1.4并右移4个单位得到的。在样点0~3处和8-11处用零值来充当。为了看得更清楚-一点,图6-6用正方形代表由冲激响应通过移位和按比例增减得到的数值点,用菱形代表我们后增加的零点。

现在来看样点x[8],输入信号的最后一个样点。这个样点的标号为8,值为-0.5. 如图6-6右下角的图中所示,x[8]导致冲激响应向右移位8个并乘以-0.5。在0~7处的值都设置为零。最后,看一下样点x[0]和x[7]。这两个样点的值都是零,导致输出部分由全0构成。

在这个例子中,x[n]是一个9点的输入信号,h[n]是4点的信号。在图6-7所示的例子中,我们将情形反过来,令x[n]是4点的信号,而h[n]是9点的信号。使用相同的两种波形,只是位置交换了。如输出信号的各个组成部分所示,x[n]的4个样点产生了4个版本,将9样点的冲激响应移位和按比例增减。和前例一样, 将其余的样点置零作为加法的占位符。

但要稍等一下,图6-7中的输出信号和图6-5中的输出信号是相同的。这不是个错误,而是一个很重要的性质:卷积是可交换的,即a[n]*b[n] =b[n] *a[n]。数学运算不会在意哪个是输入信号,哪个是冲激响应,只是两个信号相互卷积。尽管数学运算允许,但在系统理论中交换两个信号并没有物理意义。输入信号和冲激响应是完全不同的两个事物,所以交换两者没有意义。但可交换性为运用等式得到各种结果提供了一种有用的数学工具。

如表6-1所示为用输入端方算法来计算卷积的一个程序。要记住,本书中的程序为了用最简单的方式说明算法,甚至不太注重良好的编程风格。举例来说,所有的输入和输出都在-一个虚构的子程序中处理(第160行和第280行),这意味着我们不用定义这些操作是如何进行的。不要跳过这些程序,它们是关键部分,要详细理解。

程序中包含一个81点的输入信号,存放在数组X[ ]中,以及一个31点的冲激响应,存放在数组H[ ]中,得到一个111点的输出信号,放在数组Y[ ]中。这和图6-3与图6-4的长度是一样的。注意这些数组的名字用大写字母。这和我们以前的命名惯例不同,因为以前大写字母是预留给频域信号的。不幸的是,本书中的简单的BASIC程序不允许使用小写变量名。也要注意240行用*表示乘法。记住,程序中的*表示乘法,在等式中则表示卷积。在文本(如文档或程序注释)中*两个都可以表示。

160行的虚拟子程序把输入信号放入数组X[ ]中,把冲激响应放到数组H[ ]中。180~200 行将数组Y[ ]中的所有元素的值都设置为0。这是必要的,因为Y[ ]就像一个累加器一样把计算出来的各个部分加在一起形成最终的输出信号,所以在累加前要将其清零。220行到260行是程序的核心部分。220 行的FOR语句启动一个遍历输入信号数组X[ ]中的每个样点循环体(外层循环)。对输入信号的每个样点,一个内层循环(230-250 行)计算得到一个移位并按比例增减的冲激响应,并把它累加到输出信号数组Y[ ]中。这种循环嵌套结构(一个循环包含在另一个循环中)是卷积程序的一个关键特征。读者要开始熟悉它。

保持240行的索引值会得到令人惊奇的结果。假设我们是在程序执行的过程中开始分析的,因此我们开始处理X[40]这个样点,即I% = 40。冲激响应的每个点在内层循环运行时完成3件事:首先,通过乘以输入样点值(即X[40]) 的方式按比例增减冲激响应。如果这是内层循环的唯一操作,240行可以写成Y[J%] = X[40] *H[J%]。第二,通过给输出信号索引值加上40的方法,将这个增减后的冲激响应右移40个样点。这第二个操作把240行变为: Y[40 J%] = X[40] *H[J%].第三,数组Y[ ]必须累加(合成)由输入信号每个样点产生的所有信号。因此,新的信息必须被累加到数组原有的信息中。这样我们得到最后的指令: Y[40 J%] = Y[40 J%] X[40]*H[J%]。认真学习,这是非常容易混淆但又非常重要的知识点。

6.4输出端算法

卷积的第一种观点分析的是输入信号的每个样点是如何得到输出信号的多个样点的。在第二种观点中,我们反过来看输出信号的单个样点,并找出输入信号中对该点起作用的样点。这从数学和实用的角度来看都是很重要的。假设给定某一输入信号和冲激响应,想要得到两者的卷积,最直接的方法就是写一个基于输出信号的循环程序,在每次循环时计算出其中的一个样点。同样,等式可被写成以下形式:y[n]=一些其他变量的组合。也就是说,输出信号中的样点n的数值由输入信号的一些样点和冲激响应相结合而产生。这就需要知道输出信号的每个样点是如何通过完全独立于输出信号其他样点的方法计算得到的。输出端算法提供了这方面的信息。

让我们来看一个例子,了解输出信号的单一样点是如何受到输入信号一些样点的影响的。我们将应用图6-5中的y[6]作为示例样点。这一样点等于如图6-6所示的输出的9个组分中每个组分的第6个样点的和。现在仔细看一下输出的9个组分,看一下哪个组分可以影响到y[6].也就是看这9个信号中的哪一个的第6个样点处非零位置。输出组分中有5个在第6个样点处的值为0(用菱形符号标示),所以可以忽略不计。输出组分中只有4个在第6个样点处的值为非零。输出信号样点(即y[6])是从这些输入样点得到的:x[31]、x[41]、x[5]和[6]。概括地说,通过把输出组分各自的第6个样点值加在一起得到y[6], 定义如F:y[6] =x[3]H[3] x[4]h[2] x[1]h[1] x[6]h[0]。也就是,输入信号的4个样点分别剩以相应的冲激响应样点再将结果加在一起。

图6-8展示了一种作为卷积器的输出端算法,即一个卷积形成的流程图。假设输入信号为x[n],输出信号为y[n]。卷积器中,即虚线框中的每个部分都可以根据需要自由地左右移动。将卷积器设定在使其输出结果和正在计算的输出样点恰好对齐的位置。这样输入信号的4个样点就会进入卷积器的输入端。将这些值分别乘以冲激响应的对应样点,再将得到的结果相加。这就得到了输出信号的值,并将其放在合适的位置。例如,y[6]是由4个输入样点x[3]、x[4]、x[5]和x[6]计算得到的。

为了计算y[7],将卷积器右移1个样点。这导致另外4个样点(从x[4]到x[7])进入卷积器,y[7]的值同样也会放到合适的位置。对于输出信号的每个需要计算的样点都要重复这一过程。

卷积器中的冲激响应的安排是很重要的。将原始冲激响应从右到左反转,即把样点值为0的放在右端,并按样点值递增的顺序把其他各样点依

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[608844],资料为PDF文档或Word文档,PDF文档可免费转换为Word

您需要先支付 30元 才能查看全部内容!立即支付

课题毕业论文、外文翻译、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。