conv()卷积函数

借着讲这个函数使用的机会,聊聊到底什么叫卷积。

卷积的含义1

学过通信原理人都知道卷积的运算规则,反转、相乘、积分。 x ( t ) ∗ h ( t ) = ∫ − ∞ ∞ x ( t − τ ) h ( τ ) d τ x(t)*h(t)=\int_{-\infty}^\infty x(t-\tau)h(\tau)d\tau x(t)h(t)=x(tτ)h(τ)dτ x ( n ) ∗ h ( n ) = ∑ m = − ∞ ∞ x ( n − m ) h ( m ) x(n)*h(n)=\sum_{m=-\infty}^\infty x(n-m)h(m) x(n)h(n)=m=x(nm)h(m)
虽然进行卷积的二者交化位置不影响卷积的结果,但是我从来都不会写成,让 h ( t ) h(t) h(t)做翻转的形式。原因请接着看。

由于现在我们实际中处理信号、写程序的时候,都是对离散信号、采样后的模拟信号进行处理。所以就只看第二个公式就好了,第一个用处不大。

我现在有输入信号 x ( n ) = { 2 , 1 , 4 , 1 } x(n)=\{2,1,4,1\} x(n)={ 2,1,4,1}系统 h ( n ) = { 3 , 1 , 5 } h(n)=\{3,1,5\} h(n)={ 3,1,5}为什么卷积的计算规则要是反转、相乘、积分呢? 输入信号 x ( n ) x(n) x(n)的书写形式,表达了,第一个输入系统的数据是2,做一下反转是为了让信号能够按照实际的时间顺序流入系统之中。

假设 x ( 2 ) = 1 x(2)=1 x(2)=1(x(n)从x(1)开始,没有x(0))对应的是时间为零的时刻。 h ( 2 ) = 1 h(2)=1 h(2)=1同理。

所以零时刻对应的输出,应该是 x ( 2 ) , h ( 2 ) x(2),h(2) x(2),h(2)正好对其的时候,所以输出值为 x ( 1 ) h ( 3 ) + x ( 2 ) h ( 2 ) + x ( 3 ) h ( 1 ) x(1)h(3)+x(2)h(2)+x(3)h(1) x(1)h(3)+x(2)h(2)+x(3)h(1)

为什么 h ( n ) h(n) h(n)不需要做反转呢? 因为对于一个系统而言,它的数据顺序并不像输入信号一样,第一个数据代表第一个进入系统输入。它么有这个时间含义。它所代表的是系统的抽头系数,就是自左向右的抽头系数。当信号进入系统之后,是从系统的左边流到右边。

在零时刻,系统 h ( n ) h(n) h(n)经由抽头系数,对此时刻存在于系统中的信号数据做加权。然后讲加权后的值相加输出,便是该时刻的对应的系统输出值。

卷积的含义2

我有两个多项式 x 2 + 1 , 2 x + 7 x^2+1,2x+7 x2+1,2x+7他们的系数向量为[1 0 1], [2 7]。这两个向量卷积的结果就是两个多项式相乘之后得到新的多项式的系数向量。

猜你喜欢

转载自blog.csdn.net/Explore_OuO/article/details/109174278