瞬懂百科

您当前的位置:首页 > 精选问答

数字信号处理图解法计算卷积_详解数字信号处理之卷积运算

数字信号处理图解法计算卷积_详解数字信号处理之卷积运算

1.数字信号处理原理

在线性系统中,信号只能通过乘以一个常数然后相加来组合。例如,一个信号不能直接与另一个信号相乘。如下图所示,将x0 [n]、x1 [n]和x2 [n]三个信号相加得到最终信号X [n]。信号通过乘法和加法的组合称为信号合成。

信号合成的相反步骤称为信号分解。也就是说,原始信号被分解成两个或多个信号并相加。信号分解比信号合成更复杂。想象一下,如果我们把15和25相加,那么我们只能得到40。相反,如果把40分解成两个或两个以上数的相加,这种分解会有无数种形式,比如1 39,2 38,-30.5 60 10.5。

图1

在数字信号处理中,最关键的一步是信号的叠加。假设下图所示的输入信号X [n]通过一个线性系统,输出信号Y [n]。输入信号可以分解成几个更简单的信号:x1 [n],x2 [n],x3 [n],称为输入信号分量。然后,每个输入信号分量被分别输入到线性系统中,以生成相应的输出信号分量:y1 [n],y2 [n],y3 [n]。原始输入信号通过线性系统后,得到的输出信号Y [n]就是各个输出信号分量的合成。在线性系统中,这样得到的输出信号与原始信号直接通过系统得到的输出信号相同。正因为如此,任何复杂的数字信号都要分解成更简单的输入信号分量,输出信号分量经过线性系统后进行合成,得到最终的输出信号。但如果分解后的输入信号不够简单,效果和分解前一样,需要复杂的计算。

假设你需要计算2014乘以4的结果,我们可以这样计算:将2014分解成2000 10 4,将分解后的系数分别乘以4再相加,得到最终的输出结果。这种方法比两个数直接相乘要简单得多。

图2

第二步卷积

脉冲分解

脉冲分解是卷积的基础。如下图所示,N个采样信号脉冲分解后形成N个信号分量,每个信号分量只包含原信号的某个采样点信号,其他采样点的值为0。如果一个信号只有一个非零点,其他点都为零,那么这个信号就叫做脉冲信号。

图3

脉冲函数

Delta函数用希腊字母表示为O [n]。Delta函数是一个归一化的脉冲信号,即在采样点的零点其值为1,其他采样点的值均为0。

冲动反应

当线性系统中的输入信号是函数时,输出信号称为脉冲响应。如下图所示。如果两个不同的线性系统,当输入信号都是函数时,它们的输出脉冲响应也是不同的。就像在离散数字信号中,X [n]和Y [n]分别用来表示输入信号和输出信号,冲激响应用H [n]表示。当然也可以用其他符号,比如f [n]。

任何脉冲信号都可以看作是脉冲函数的平移和缩放。例如,假设信号A [n]只在采样点8的位置输入,其输入值为-3,相当于将delta函数平移到8的位置,乘以-3,则表示为公式:A [n]=-3 o [n-8]。如果函数的脉冲响应是H [n],那么A [n]的脉冲响应是-3h [n-8]。

卷积和数学中的加减乘除一样,是一种形式上的数学运算。在数学运算中,输入两个数得到第三个数,输入卷积产生第三信号。卷积广泛应用于统计和概率中。在线性系统中,卷积描述了输入信号、脉冲响应和输出信号之间的关系。

图4

上图描述了卷积应用于线性系统的示意图。输入信号X [n]进入具有脉冲反应H [n]的线性系统,以产生输出信号Y [n]。用公式表示:x [n] * h [n]=y [n]。

3.卷积运算

卷积可以从输入信号的角度来理解:输入信号的每个采样点如何对输出信号的多个采样点作出贡献,即每个输入信号分量进入线性系统后,会产生多个脉冲响应的平移和缩放版本,输出结果是每个信号分量对应的脉冲响应的平移和缩放版本的合成;从输出信号的角度,我们可以了解输出信号的每个采样点是如何从输入信号的多个采样点获取信息的。也就是说,对于每个输出信号,多个输入信号将贡献其脉冲响应,并且输出结果是相应脉冲响应的线性加权。

这两种理解只是对卷积运算的不同理解,结果是一样的。

从输入信号的角度理解

图5

上图是简单的卷积计算。输入信号X [n]有九个点,输入到有四个脉冲反应H [n]的线性系统中,得到9 ^ 4-1的输出信号Y [n]。用数学术语表示为:x [n]卷积h [n]输出结果y [n]。从第一个角度理解卷积:对输入信号进行分解,将输入信号分量通过一个线性系统,然后合成各个输出分量。在这个例子中,输入信号的每个采样点将生成脉冲响应的平移和缩放版本,并且输出信号将通过叠加脉冲响应的这些平移和缩放版本来生成最终输出信号Y [n]。具体计算过程如下图所示:

图6

图6:输入信号中的每个分量都会产生脉冲响应的平移和缩放版本。也就是方块代表的脉冲反应结果。除了正方形以外,所有的起始值都是0。

假设我们从输入信号的第四个采样点x [4]开始。该采样点的下标为4,其值为1.4。输入信号分解时,这个采样点可以用脉冲函数表示为:1.4 o [n-4]。通过线性系统后,该采样点对应的输出信号分量为1.4h [n-4]。如上面中间位置图像所示。请注意,输出信号分量的脉冲响应乘以1.4,采样点向右移动到下表中的采样点。0-3和8-11的值都是0。

在上图中,正方形表示平移和缩放的脉冲响应值,菱形点的值为0。

当输入信号为四个样本,并通过一个有九个点的脉冲响应线性系统时,输出结果与上图所示相同。

图7

图8

以上两种计算方法的结果是相同的,揭示了卷积的一个重要性质:卷积的交换律。即a [n] * b [n]=b [n] * a [n]。也就是说,卷积并不关心哪个信号是输入信号,哪个信号是脉冲响应。

假设输入信号为{1,2,3,4,1,2,3,4,5 };脉冲响应为:{2,3,1,4 };然后卷积计算过程等效如下:将每个输入信号分量分解成单个脉冲函数,输出结果为H[n]2 * H[n-1]3 * H[n-2]4 * H[n-3]H[n-4]2 * H[n

图9

图10

从输入信号角度理解卷积码的一个例子:

# include 《math.h》 # include 《stdio.h》 # include 《stdlib.h》 int main(){ int input signal[9]={ 1,2,3,4,1,2,3,4,5 };int ImpulseCorres[4]={2,3,1,4 };int OutPut[12]={ 0 };int i,j;//输入视图for(I=0;我《9;I){ for(j=0;j《4;j)OutPut[I j]=OutPut[I j]input signal[I]* impulse corres[j];} for(I=0;我《12;i ) { printf("%d",OutPut[I]);}返回0;}

从输出信号的角度理解

从输出信号的角度理解卷积,分析每个输入信号的采样点如何影响多个输出信号的采样点。从输出角度理解卷积,就是分析哪些输入信号影响输出信号的每个采样点。这种方式对于从数学和实际应用的角度理解卷积是相当有用的。用公式表示:y [n]=其他变量的组合。换句话说,输出信号的采样点n等于许多输入信号和脉冲响应的线性组合。

从图6可以看出,单个输出信号如何受到多个输入模型的影响。假设我们以y [6]为例,在图6中找出9个输入信号中有哪些非零值的采样点作用在n=6的位置上。从图中可以看出,5个输入信号在n=6的位置数值为0,只有4个输入信号作用于n=6时数值才不为零。它们是x [3],x [4],x [5]和x [6]。y [6]的最终结果是分别作用于线性系统的这四个输入信号的输出后信号分量之和。即y[6]=x[3]* h[3]x[4]* h[2]x[5]* h[1]x[6]* h[0]。

图11,从输出信号的角度理解卷积,相当于一个卷积机。如图,假设输入信号X [n]和输出信号Y [n],虚线框代表卷积机,可以从左到右,从右到左自由移动。卷积器的位置应该对应于我们需要找到的输出信号的采样点。输入信号的四个采样点进入卷积器,四个采样点的个数与它们对应的冲激响应相乘,然后乘积相加。例如,为了计算Y [6],需要将四个输入信号X [3]、X [4]、X [5]和X [6]传输到卷积机。相应地,为了计算y [7],卷积器必须将采样点7的位置向右移动一位,使得进入卷积的四个信号是X [4]、X [5]、X [6]和X [7],以此类推,直到计算出所有的输出信号分量。

图11

卷积机的脉冲响应序列非常重要。卷积器中的脉冲响应是原始脉冲响应的镜像。为什么需要翻翻?

即如果我们计算y [4]的输出结果,从上图可以看出y[4]=x[4]* h[0]x[3]* h[1]x[2]* h[2]x[1]* h[3]x[0]* h[4]。也就是说,与当前输入信号点到线性系统的输入相对应的输出结果是到当前点的当前信号和先前信号的脉冲响应的线性权重。如公式所述,为了计算y [4]的结果,我们必须对作用在n=4的位置上的输入x [0]、x [1]、x [2]、x [3]和x [4]的脉冲响应进行线性加权。也就是说,当X [0]进入系统时,在n=4的位置对应的脉冲响应为H [4],其输出为X [0] * H [4]。当X [1]进入系统时,在n=4的位置对应的脉冲响应为H [3],其输出结果为X [1] * H [3]。可以看出,输出信号的每个分量都是受接收到的输入信号影响的权重的线性组合,其权重正好是脉冲响应的镜像翻转对应的权重值。这就是为什么卷积公式需要对输入信号求逆进行线性叠加的原因。

假设输入信号X [n]有N个点,采样点从0-N-1,有M个点,脉冲响应是H [n]的线性系统,信号点从0-M-1。那么这两个信号的卷积将输出具有N个M-1采样点的信号,下标从0到N个m-2。表示为:

从输出信号角度理解卷积码的一个例子:

# include 《math.h》 # include 《stdio.h》 # include 《stdlib.h》 int main(){ int input signal[9]={ 1,2,3,4,1,2,3,4,5 };int ImpulseCorres[4]={2,3,1,4 };int OutPut[12]={ 0 };int i,j;//输出视图for(I=0;i 《12;i++) { OutPuti = 0; for(j = 0; j 《4;j++) { if((i-j)《0) continue; if((i-j)》 8)继续;OutPut[I]=impulse corres[j]* input signal[I-j];} } for(I=0;我《12;i ) { printf("%d",OutPut[I]);}返回0;}

4.图像中的卷积

假设二维函数I和h,相应的卷积运算可以表示为:

它也可以表示为:

当应用于图像场时,其卷积公式也可以表示为:

当滤波函数H*(I,j)=H(-I,-j)前进,H(I,j)旋转180度时,结果与线性滤波相同。

图像中的线性滤波可以表示为:

其原理是:

从他们的公式可以看出,线性滤波实际上是滤波函数旋转180度后卷积的结果。

等着吧!林恩

标签:信号卷积输出


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 梭子蟹一般需要蒸多久_梭子蟹需要蒸多久?

下一篇: 500-1000元有哪些狗狗?(哈士奇价格多少钱一只幼犬)



推荐阅读