数学基础:卷积(Convolution)

卷积(Convolution)

卷积是一种积分变换的数学方法,与傅立叶变换有着密切的联系。在数字信号处理、通信系统、光学系统、神经网络计算许多方面得到了广泛应用。
在泛函分析中,卷积旋积摺积是通过两个函数gh生成第三个函数f的一种数学算子,表征函数gh经过翻折平移之后重叠部分函数值乘积对重叠长度的积分

定义

简单定义:
f(x), g(x)是R1上的两个可积函数,作积分:
f ( τ ) g ( x τ ) d τ \int_{-\infty}^{\infty}f(\tau)g(x-\tau)d\tau
可以证明,关于几乎所有实数x,上述积分都是存在的。随x的不同取值,这个积分有不同的函数值,定义为新函数f(x),成为函数fg的卷积,记为: f ( x ) = g ( x ) h ( x ) = ( g h ) ( x ) f(x)=g(x)*h(x)=(g*h)(x)

与傅立叶变换的关系

傅立叶变换有一条性质:两函数g,h的傅立叶变换的乘积,等于两函数卷积 g h g*h 的傅立叶变换。

卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积。即,一个域中的卷积相当于另一个域中的乘积,例如时域中的卷积就对应于频域中的乘积。

卷积的特点

  1. 由卷积得到的函数 g h g*h 一般要比gh都光滑。
  2. 两个操作函数g, h满足交换律,结合律,分配律,数乘结合律(对任意实数和复数)。

卷积的应用

  1. 统计学中,加权的滑动平均是一种卷积。
  2. 卷积是在信号与线性系统的基础上或背景中出现的。
    信号与线性系统,讨论的就是信号经过一个线性系统以后发生的变化(就是输入 输出 和所经过的所谓系统,这三者之间的数学关系)。所谓线性系统的含义,就是,这个所谓的系统,带来的输出信号与输入信号的数学关系式之间是线性的运算关系。
    卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。

C语言实现

void convolution(float *input1, float *input2, float *output, int mm, int nn)
{ 
    float *xx = new float[mm+nn-1]; 
    // do convolution 
    for (int i = 0; i < mm+nn-1; i++)
    { 
        xx[i] = 0.0;
        for (int j = 0; j < mm; j++) 
        { 
            if (i-j > 0 && i-j < nn)
            xx[i] += input1[j] * input2[i-j]; 
        } 
     }
     // set value to the output array 
     for (int i = 0; i < mm; i++) 
     output[i] = xx[i + (nn-1) / 2];
     delete[] xx;
}
发布了23 篇原创文章 · 获赞 5 · 访问量 1827

猜你喜欢

转载自blog.csdn.net/QQ275176629/article/details/104455033