加载中…
正文 字体大小:

对于信号与系统离线序列卷积的理解

(2016-05-09 18:06:57)
标签:

信号与系统

序列

卷积

理解

解析

分类: 电子科技

对于信号与系统离线序列卷积的理解

        卷积在信号与系统的第二章已经提出,然而现在的的教材基本都是这样,一个公式,然后大量的文字解释,但是,对于我们这种初学者仍然感觉晦涩难懂,即便是被称为经典的奥本海姆教材,我也觉得学起来并不轻松。

        那么如何理解离散系统的卷积,首先来看离散系统的卷积公式:

clip_image002

        首先应该了解到的是在这个线性时不变系统中,x[k]是输入信号,y[n]是系统的输出,h[n]是系统的单位脉冲clip_image004输入时产生的输出响应(h[n-k]则对应着clip_image006输入时的响应),实际上h[n-k]也直接是h[n]进行了k的时移,因为系统是时不变的嘛。也就是说卷积公式它在描述一个线性时不变系统的输入输出关系。

        对于一个系统,输入是未知的,对于任何输入,我们都能通过卷积关系得到系统的输出,而对于一个系统的特性,我们无需了解复杂的内部构造,我们只需要关心它对单位脉冲的响应h[n]就足够了,因为x[k]与h[n]卷积就得输出了。对于未知的问题,不管它多难,你只要按部就班走,就一定能得到解决。

        好了,我们现在回到公式上,y、x、h这三个量已经解释过了,那么它们里面带的小字母n/k 是什么玩意,联想到数学上常用的函数关系y=y(x),y是函数值,里面的x是自变量,那么这对应上了一个二维坐标:

clip_image008

那么对于y[n]很明显,它跟这个y(x)这个二维坐标函数最像了,何不xy坐标系中的x轴换成n轴,y=y[n]实际上代表每个离散点上的幅值,不就是上面的y轴吗。很好像下面一个以n为轴的坐标系统就出来了,n轴上n可以取遍-clip_image010~+clip_image010[1]上所有的整数点,各个离散的n点上每个点对应有个幅值Amplitude,就是y[n]了。

clip_image012

那n分配好了是坐标,狗[n](狗代表符号比如可是y,h,x)代表幅值,那么k又是什么鬼,数轴上如何体现?很明显x[k]是自变量为k的一个离散函数,当然x[k]同样代表某个k点时的幅值,那么幅值可以跟上面的二维坐标中的幅值坐标公用,那k咋办,k毕竟不是n,自然,引入第三维坐标k轴,k轴上k可以取遍-clip_image010[2]~+clip_image010[3]上所有的整数点。一切比常规稍微复杂点的东西,很可能就是二维变成了三维~。

        接下来这个图形出现后,前面的一所有废话都显得太过多余。很不好意思,我首次接触并只摸索了半天这个画图软件,并且还是国庆要去吃表哥喜酒的日子,所以图画的一点都不漂亮,然而我尽力了。

clip_image014

如你所见,n轴,k轴,幅值轴共同呈现在一个图里,红色的离散点如图例说明,代表是系统的单位脉冲clip_image004[1]输入的响应h[n],请注意所有的值都是离散的,我这里用折线将折线离散点给它连起来,只为了看得更清楚,我们能够清楚的看到h[n]是一个随着n从左边到右边增加幅值先升起又落下来的样子,在n=0处,我特意让它达到峰值,然而你所遇到的系统基本都不是这样的,我只是特意构造这么一个系统,让它更好看,仅此而已,并且为了让它更好看还对称我本来想把弄成一个等腰三角形的样子,但对称虽然美观但会影响我后面对一个事情的说明,希望这里不会给你带来误区。景色再往“后”看看,在每个k轴的整数取值点上,都有这么一个跟h[n]很像的一条折线,它们看起来很有层次感,因为它们就是依次对h[n]进行时移1个单位时间,然后通过k轴错开放置的h[n],在k=0时,没有时移,就是h[n];在k=1时,往n右边移动1,得到h[n-1];在k=2是,往n右边移动2,得到h[n-2]… 。当然此时你应该注意到k=3,也就是淡蓝色那根折线,它看起来形状跟h[n]也是很像的,只是塌了下来,变小了,破坏了层次美感,这样的原因是一个加权的概念。也就是说,上面讲的后面的那些折线信号并不只只是时移那么简单,还做了加权处理,对于k轴的整数取点,刚才说描述的作用是将信号错开放置,那x[k]作用在哪,它就作用在权上。对于放置在k轴各个点上的h[n]时移信号,你不能就这么白放,你必须得乘以x[k]在k点时的幅值,这就是所谓的加权,那么各个颜色的函数实际上应该表述为: x[k]h[n-k] (这里代表代数乘法),而x[k](k取遍-clip_image010[4]~+clip_image010[5])就是系统的输入啊。在图上,我对x[k]信号的描述,就是中间那6个金色的点,借此机会,我们再从k轴方向的视角来看看这个世界:

clip_image016

可以看出x[-1]=0,x[0]=1,x[1]=1,x[2]=1,x[3]=0.5,x[4]=1,其它的点我都默认幅值都为0。所以根据x[k]幅值和加权的概念,你应该就有答案了,为什么x=3时,那个h[n-3]的信号为嘛缩小了,因为它是x[3]h[n-3]=0.5h[n],而k=0,1,2,4的点幅值都一样的,因为共同乘以的是幅值1, 当k=-1时,x[k]=0,不管什么样的波形乘以0都没有了。事实上你以后遇到的输入x[k]肯定没这么好看,这么多个1,然后还只有这么几个值,所以你试图按照同样的方法想象出那些错开的波形是,肯定没有上面的好看,因为它可能一会儿很大,一会儿很小~。

x[k]h[n-k]上面提到了是对应k点上时移k的h[n]乘以x[k]也就是加权后的波形。我们再把卷积公式复制下来再看一遍,似乎就不那么陌生了,因为求和符合后面那一串我们已经知道是什么含义了,那我们还差一步。

clip_image018

从卷积公式来看,k需要从-clip_image010[6]~+clip_image010[7] 取遍所有的整数点,如果某个输入x[k]有无穷多个幅值为非0的点,那么理论上我要这么画出每个时移加权波形的话,将要画无穷多个的,然后还得进行最后一步累加求和,由于最终累加得到的是y[n]因此很明显,要往n轴上进行累加,想象一下,把所有的波形都往与x=0相交的n轴上面挤,压扁成一个波形,这个波形每个n点的值对应与各个错开的波形在该点幅值之和。这个累加得到的波形,不就是卷积得到的值了吗。至此,卷积图形化概念似乎已经描述清楚了。

-------------------------------休息分割线----------------------------

        然而,nozuonodie,奥本课本51页又提出了一种想象卷积的方法,他说把k看成变量,固定一个n值,求得这个特定n值下的卷积和,比如对于卷积和y[n]的y[5]那个点。什么鬼,三维立体本来就很难想象,好不容易形象化一种卷积方法,现在又来一出。实际上,第一个图中的波形移位加权错开的图形依旧是有用的,毕竟这就是求和公式后面的物理解释,只不过上面我们说的把波形朝着n轴压扁的方法是把所有n的点的值都得出来来,而那他这里说的把n固定,把k看成变量是指我不管其它点,只关注我需要的指定的那个n点。既然要固定n,那么很自然,二维xy坐标中要固定x,取一个固定的x值,那就是取一条x=A的直线,那么对应于三维xyz坐标,就是取一个x=A的面。同样的在我们上述的幅值、n、k的三维坐标中,我们要固定n就娶一个n=A的面,比如我只关注n=-1时的y[-1]点的值,那么就取n=-1的一个切面,看看在这个面上,那些函数值是些什么东西。为了获得切面上的视角,我们先来个上帝视角图:

clip_image020

从俯视图中可以看到,设想存在一个n=-1的平面,那么落在这个平面上的点,分别是我图中红色长箭头穿过的五种颜色的点,我以最高点为参照物(图中我用红色小框框指明了该函数上最高点的位置)来描述,它们分别是:各个颜色图形的最高点左边第1个点(红色图形),最高点左边第2个点(绿色图形),最高点左边第3个点(深蓝色图形),最高点左边第4个点(淡蓝色图形),最高点左边第5个点(紫色图形)。看上面这段话的数字部分,很有规律,依次是左边的12345点啊,我们再回到正面对h[n]的视角:

clip_image022

那么,上面说的不同颜色图形的左边离最高点12345的点与h[n](注:这个h[n]虽然在该图中是x[0]加权所得的,但我这里表示它为系统固有的单位脉冲响应,与当前的输入x[0]是否为0无关)一个图形的左边离最高点12345(如图上红色带数字的箭头所指)的有什么区别呢,区别还是在于加权,因为绿色图形是x[1]h[n-1],深蓝色的图形是x[2]h[n-2]…,这里对上图做一个假设,还是忽略塌下去的蓝色点,假设x[k]的所有幅值都为1,也就是加权对h[n-k]幅值没有影响,那么上面各种颜色下的左边离最高点12345的点不就是h[n]函数以n=1的垂直于k轴的轴线顺时针旋转90度后的点一样的吗。是的,这里是顺时针注意一下,这就是我对于h[n]函数那个不对称点的用意了,可以直观的发现,那个犄角的点都在n=-1平面的右边越来越远了,不可能跟n=-1搭上关系了。顺时针旋转90是由我这个坐标得到结论,更严谨更广义话的结论则是:

n轴的-clip_image010[8]端要旋转到k轴的+clip_image010[9]端,这样你就无需关心是逆时针还是顺时针,甚至多少角度了。

        理解顺时针旋转90度个形象化很重要,这是我写这篇文章的目的,你明白这些点如何得来的就很好了。这简直有点像将n轴为变量的函数变换到以k轴为变量的函数,由于n和k都是整数,刻度都是一样的,实现无缝对接。这样就得到n为固定值,k为变量的h函数h[clip_image024-k],上面的描述中,对应于clip_image024[1]=-1,那么就是h[-1-k]。现在,我们可以再把x[k]上对应的权放进来,那得到了x[k]h[-1-k]。此时,我们应该把x[k]h[-1-k]看成一个用折线连起来的函数,或者你可以想象把图中红色的折线函数顺时针旋转90度而然后加权后的图形样子,因为此时我们只关心y[-1]所以,做完这步骤之后,其它地方的乱七八糟的点都忽略掉吧,因为我们仍然需要做一个累加,同样的还是往n轴上压扁,但此时你只需要压n=-1上的那一个x[k]h[-1-k]函数就可以了,就如同压一根扁弹簧而不像之前的千层饼了。那么此时就得到了这样一个函数表达式:

clip_image026

这公式这关注的就是y[-1]一点的值,那么一般化,对于任意关注的clip_image024[2]点的y[clip_image024[3]],公式为:

clip_image028

        至此,我想已经基本完成了离散序列的图形化解释,那么推广到连续函数我想也是很简单的,因为对于离散化的序列,我们时移都是一格一格的,而这个一格一格的概念在连续函数中应该就被称为微分,你可以将连续函数看成一小格一小格的,当然这个小格子的长度是dx,dx->0。

        对wiki上的卷积动态图的理解,其实蛮早就看过wiki上面对于卷积的gif图描述,说实话当时并不是很理解,现在恍然大悟,原来它是给了一种更为简单的估计卷积图形的方法

https://commons.wikimedia.org/wiki/File:Convolution_of_box_signal_with_itself2.gif

clip_image030

这是两个准备进行卷积的信号,我想这张图首先应该关注图例及横轴的表示的意义,图中表示的是f(t)clip_image032g(t),可是你需要注意目前图上蓝色和红色的信号并不在t轴上,而是在clip_image034轴上,我们在计算卷积的时候,使用公式是:

clip_image036

所以,你可以发现进行积分时,我们将f和g都到了clip_image038轴上面,f(t)->f(clip_image038[1])非常简单,图形不用变,直接将轴标注成clip_image038[2]轴就可以了,g(t)->clip_image040,g(t)移动到clip_image038[3]轴上,需要将时间轴进行翻转,从而clip_image038[4]变成两个函数的自变量了,而此时t只作为一个时移偏量而已了。因此上面的图中,蓝色的图形跟f(t)在t轴时一模一样,而红色的图形跟g(t)在t轴时的图形是时间翻转的,需要特别注意,由于这里的g(t)是左右对称的,所以实际上你看不出来翻转的区别,当g(t)关于0点不对称时,它就有区别了。

clip_image042

随着t的移动,两个图形开始相交,而卷积的大小就是他们相交面积的二维表示,左下角的箭头标示的是卷积图形,注意,它是在t轴上的。

clip_image044

这是卷积完成后的图像,因此卷积的时间范围实际上比f(t)和g(t)都要长,具体是:起始时间为f(t)和g(t)起始时间之和,结束时间为起始时间为f(t)和g(t)结束时间之和。

由于知识有限,如有理解或者书写上的错误欢迎指出,并请随时关注该文档的讨论及修正版的发布位置:www.isoebbs.com .

-----just by launcher @ 桂林 2015-10-1

本文PDF格式文档请移步至 此处下载

0

阅读 评论 收藏 转载 喜欢 打印举报
已投稿到:
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有