最容易理解的对卷积(convolution)的解释

最容易理解的对卷积(convolution)的解释啰嗦开场白读本科期间 信号与系统里面经常讲到卷积 convolution 自动控制原理里面也会经常有提到卷积 硕士期间又学了线性系统理论与数字信号处理 里面也是各种大把大把卷积的概念 至于最近大火的深度学习 更有专门的卷积神经网络 Convolutiona CNN 在图像领域取得了非常好的实际效果 已经把传统的图像处理的方法快干趴下了 啰啰嗦嗦说了这么多卷积 惭

啰嗦开场白

读本科期间,信号与系统里面经常讲到卷积(convolution),自动控制原理里面也会经常有提到卷积。硕士期间又学了线性系统理论与数字信号处理,里面也是各种大把大把卷积的概念。至于最近大火的深度学习,更有专门的卷积神经网络(Convolutional Neural Network, CNN),在图像领域取得了非常好的实际效果,已经把传统的图像处理的方法快干趴下了。啰啰嗦嗦说了这么多卷积,惭愧的是,好像一直以来对卷积的物理意义并不是那么清晰。一是上学时候只是简单考试,没有仔细思考过具体前后的来龙去脉。二是本身天资比较愚钝,理解能力没有到位。三则工作以后也没有做过强相关的工作,没有机会得以加深理解。趁着年前稍微有点时间,查阅了一些相关资料,力争将卷积的前世今生能搞明白。

1.知乎上排名最高的解释

直接看图,不信看不懂。以离散信号为例,连续信号同理。

下面通过演示求x[n] * y[n]的过程,揭示卷积的物理意义。

重复一遍,这就是卷积的意义:加权叠加。

对于线性时不变系统,如果知道该系统的单位响应,那么将单位响应和输入信号求卷积,就相当于把输入信号的各个时间点的单位响应 加权叠加,就直接得到了输出信号。

以上是知乎上排名最高的回答。比较简单易懂。

2.卷积的另外解释

卷积表示为 y ( n ) = x ( n ) ∗ h ( n ) y(n) = x(n)*h(n) y(n)=x(n)h(n)
使用离散数列来理解卷积会更形象一点,我们把y(n)的序列表示成 y ( 0 ) , y ( 1 ) , y ( 2 ) , ⋯ y(0),y(1),y(2),\cdots y(0),y(1),y(2),, 这是系统响应出来的信号。
同理, x ( n ) x(n) x(n)的对应时刻的序列为 x ( 0 ) , x ( 1 ) , x ( 2 ) , ⋯ x(0),x(1),x(2),\cdots x(0),x(1),x(2),
其实我们如果没有学过信号与系统,就常识来讲,系统的响应不仅与当前时刻系统的输入有关,也跟之前若干时刻的输入有关,因为我们可以理解为这是之前时刻的输入信号经过一种过程(这种过程可以是递减,削弱,或其他)对现在时刻系统输出的影响,那么显然,我们计算系统输出时就必须考虑现在时刻的信号输入的响应以及之前若干时刻信号输入的响应之“残留”影响的一个叠加效果。
假设0时刻系统响应为 y ( 0 ) y(0) y(0),若其在1时刻时,此种响应未改变,则1时刻的响应就变成了 y ( 0 ) + y ( 1 ) y(0)+y(1) y(0)+y(1),叫序列的累加和(与序列的和不一样)。但常常系统中不是这样的,因为0时刻的响应不太可能在1时刻仍旧未变化,那么怎么表述这种变化呢,就通过h(t)这个响应函数与x(0)相乘来表述,表述为 x ( m ) × h ( m − n ) x(m)×h(m-n) x(m)×h(mn),具体表达式不用多管,只要记着有大概这种关系,引入这个函数就能够表述 y ( 0 ) y(0) y(0)在1时刻究竟削弱了多少,然后削弱后的值才是 y ( 0 ) y(0) y(0)在1时刻的真实值,再通过累加和运算,才得到真实的系统响应。
再拓展点,某时刻的系统响应往往不一定是由当前时刻和前一时刻这两个响应决定的,也可能是再加上前前时刻,前前前时刻,前前前前时刻,等等,那么怎么约束这个范围呢,就是通过对 h ( n ) h(n) h(n)这个函数在表达式中变化后的 h ( m − n ) h(m-n) h(mn)中的m的范围来约束的。即说白了,就是当前时刻的系统响应与多少个之前时刻的响应的“残留影响”有关。
当考虑这些因素后,就可以描述成一个系统响应了,而这些因素通过一个表达式(卷积)即描述出来不得不说是数学的巧妙和迷人之处了。





3.卷积的数学定义

4.卷积的应用

5.补充

另外在知乎上看到非常好也非常生动形象的解释,特意复制粘贴过来。(知乎马同学的解释)

卷积,是我们学习高等数学之后,新接触的一种运算,因为涉及到积分、级数,所以看起来觉得很复杂。

这里写图片描述

这个特征有什么意义?

只看数学符号,卷积是抽象的,不好理解的,但是,我们可以通过现实中的意义,来习惯卷积这种运算,正如我们小学的时候,学习加减乘除需要各种苹果、糖果来帮助我们习惯一样。

我们来看看现实中,这样的定义有什么意义。

2 离散卷积的例子:丢骰子

我有两枚骰子:

这里写图片描述

这里写图片描述

这里写图片描述

符合卷积的定义,把它写成标准的形式就是:

( f ∗ g ) ( 4 ) = ∑ m = 1 3 f ( 4 − m ) g ( m ) \displaystyle (f*g)(4)=\sum _{m=1}^{3}f(4-m)g(m) (fg)(4)=m=13f(4m)g(m)

3 连续卷积的例子:做馒头

看起来很显眼。

平滑这座山峰的办法之一就是,把山峰刨掉一些土,填到山峰周围去。用数学的话来说,就是把山峰周围的高度平均一下。

4.2 计算

卷积可以帮助实现这个平滑算法。

然后用下面这个平均矩阵(说明下,原图的处理实际上用的是正态分布矩阵,这里为了简单,就用了算术平均矩阵)来平滑图像:

g = [ 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 1 9 ] g=\begin{bmatrix} \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \\ \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \\ \frac{1}{9} & \frac{1}{9} & \frac{1}{9} \end{bmatrix} g=919191919191919191

记得刚才说过的算法,把高频信号与周围的数值平均一下就可以平滑山峰。

这里写图片描述

写成卷积公式就是:

( f ∗ g ) ( 1 , 1 ) = ∑ k = 0 2 ∑ h = 0 2 f ( h , k ) g ( 1 − h , 1 − k ) \displaystyle (f*g)(1,1)=\sum _{k=0}^{2}\sum _{h=0}^{2}f(h,k)g(1-h,1-k) (fg)(1,1)=k=02h=02f(h,k)g(1h,1k)

要求$ c_{4,5} $,一样可以套用上面的卷积公式。

这样相当于实现了 g 这个矩阵在原来图像上的划动(准确来说,下面这幅图把 g 矩阵旋转了 18 0 ∘ 180^\circ 180 ):

6.另外一个关于卷积的有意思的解释

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/199172.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午1:41
下一篇 2026年3月26日 下午1:41


相关推荐

  • PreferenceFragment使用

    PreferenceFragment使用PreferenceFr 引入在 Android3 0 之前 设置界面使用 PreferenceAc 在 Android3 0 之后 官方推荐使用 PreferenceFr 对应于碎片化技术 使用新建 Fragment 继承 PreferenceFr 加载选项配置 xml 文件 publicstatic

    2026年3月18日
    2
  • 在MT4上使用双线MACD指标源码

    在MT4上使用双线MACD指标源码MACD指标是股票交易中经典的一款技术分析指标,该指标由两条曲线和柱线组成。基本用法:MACD金叉:DIFF由下向上突破DEA,为买入信号。MACD死叉:DIFF由上向下突破DEA,为卖出信号。MACD绿转红:MACD值由负变正,市场由空头转为多头。MACD红转绿:MACD值正转负,市场多头转空头。DIFF与DEA均为正值,即都在零轴线以上时,大势属于多头市场,DIFF向上突破DEA,可以做买入信号。DIFF与DEA均为负值,即都在零轴线以下时,大势属于空头市场,DIFF向下跌破DEA,可做卖出信号。DE

    2022年5月7日
    103
  • mybatis中resultMap配置细则

    mybatis中resultMap配置细则resultMap算是mybatis映射器中最复杂的一个节点了,能够配置的属性较多,我们在mybatis映射器配置细则这篇博客中已经简单介绍过resultMap的配置了,当时我们介绍了resultMap中的id和result节点,那么在resultMap中除了这两个之外,还有其他节点,今天我们就来详细说说resultMap中的这些节点。如果小伙伴对mybatis尚不了解,建议先翻看博主前面几篇

    2025年7月12日
    8
  • 极限学习机(ELM)从原理到程序实现(附完整代码)

    极限学习机(ELM)从原理到程序实现(附完整代码)摘要:极限学习机(ELM)是当前一类非常热门的机器学习算法,被用来训练单隐层前馈神经网络(SLFN)。本篇博文尽量通俗易懂地对极限学习机的原理进行详细介绍,之后分析如何用MATLAB实现该算法并对代码进行解释。本文主要内容如下:算法的原理、算法程序实现、点击跳转至全部文件下载页

    2022年5月29日
    406
  • 大数据名词(1) -Shuffle

    大数据名词(1) -Shuffleauthor 冶秀刚 mail Shuffle 过程是 MapReduce 的核心 也被称为奇迹发生的地方 要想理解 MapReduce Shuffle 是必须要了解的 我看过很多相关的资料 但每次看完都云里雾里的绕着 很难理清大致的逻辑 反而越搅越混 前段时间在做 MapReducejob 性能调优的工作 需要

    2026年3月16日
    3
  • java indexeddb_indexedDB 基本使用

    java indexeddb_indexedDB 基本使用原标题 indexedDB 基本使用来源 党黎明 自荐投稿 他目前在深圳做前端开发 mr dang github io java 2017 12 09 indexedDB 基本使用 htmlindexedD 简介 indexedDB 是一种使用浏览器存储大量数据的方法 它创造的数据可以被查询 并且可以离线使用 indexedDB 有以下特点 indexedDB 是 WebSQL 数据库的取代品 i

    2026年3月18日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号