1

conv(向量卷积运算)

所谓两个向量卷积,说白了就是多项式乘法。
比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积如下:
把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列,比如就按升幂吧,写出对应的多项式:1+2x+3x^2;同样的,把q的元素也作为多项式的系数按升幂排列,写出对应的多项式:1+x。

卷积就是“两个多项式相乘取系数”。
(1+2x+3x^2)×(1+x)=1+3x+5x^2+3x^3
所以p和q卷积的结果就是[1 3 5 3]。

记住,当确定是用升幂或是降幂排列后,下面也都要按这个方式排列,否则结果是不对的。
你也可以用matlab试试
p=[1 2 3]
q=[1 1]
conv(p,q)
看看和计算的结果是否相同。

conv2(二维矩阵卷积运算)

a=[1 1 1;1 1 1;1 1 1];
b=[1 1 1;1 1 1;1 1 1];
>> conv2(a,b)

ans =

1     2     3     2     1
     2     4     6     4     2
     3     6     9     6     3
     2     4     6     4     2
     1     2     3     2     1

>> conv2(a,b,'valid')

ans =

9

>> conv2(a,b,'same')

ans =

4     6     4
     6     9     6
     4     6     4

>> conv2(a,b,'full')

ans =

1     2     3     2     1
     2     4     6     4     2
     3     6     9     6     3
     2     4     6     4     2
     1     2     3     2     1

convn(n维矩阵卷积运算)

>> a=ones(5,5,5)

a(:,:,1) =

1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,2) =

1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,3) =

1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,4) =

1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

a(:,:,5) =

1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1
     1     1     1     1     1

>> b=ones(5,5,5);

>> convn(a,b,'valid')

ans =

125

>> convn(a,b,'same')

ans(:,:,1) =

27    36    45    36    27
    36    48    60    48    36
    45    60    75    60    45
    36    48    60    48    36
    27    36    45    36    27

ans(:,:,2) =

36    48    60    48    36
    48    64    80    64    48
    60    80   100    80    60
    48    64    80    64    48
    36    48    60    48    36

ans(:,:,3) =

45    60    75    60    45
    60    80   100    80    60
    75   100   125   100    75
    60    80   100    80    60
    45    60    75    60    45

2

1.full

如下图:

图(1)

图中蓝色为原图像,白色为对应卷积所增加的padding,通常全部为0,绿色是卷积后图片。图的卷积的滑动是从卷积核右下角与图片左上角重叠开始进行卷积,滑动步长为1,卷积核的中心元素对应卷积后图像的像素点。

2.same

如下图:

图(2)

卷积的时候需要对卷积核进行180的旋转,同时卷积核中心与需计算的图像像素对齐,输出结构为中心对齐像素的一个新的像素值

3. valid

如下图:

图(3)

太简单,不解释。

最后,我们可以总结出full,same,valid三种卷积后图像大小的计算公式:
1.full: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1+N2-1 x N1+N2-1
如图1, 滑动步长为1,图片大小为2x2,卷积核大小为3x3,卷积后图像大小:4x4
2.same: 滑动步长为1,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:N1xN1
3.valid:滑动步长为S,图片大小为N1xN1,卷积核大小为N2xN2,卷积后图像大小:(N1-N2)/S+1 x (N1-N2)/S+1
如图2,滑动步长为1,图片大小为5x5,卷积核大小为3x3,卷积后图像大小:3x3
3
MATLAB的conv2函数实现步骤(conv2(A,B)):

其中,矩阵A和B的尺寸分别为ma*na即mb*nb

① 对矩阵A补零,第一行之前和最后一行之后都补mb-1行,第一列之前和最后一列之后都补nb-1列(注意conv2不支持其他的边界补充选项,函数内部对输入总是补零);

② 将卷积核绕其中心旋转180度;

③ 滑动旋转后的卷积核,将卷积核的中心位于图像矩阵的每一个元素,并求乘积和(即将旋转后的卷积核在A上进行滑动,然后对应位置相乘,最后相加);下面分别是shape=full, same, valid时取输出图像大小的情况,其中:位置1表示输出图像的值从当前核的计算值开始(对应输出图像左上角),位置2表示到该位置结束(对应输出图像右下角)

转载于:https://www.cnblogs.com/hyb221512/p/9276621.html

MATLAB卷积运算(conv、conv2、convn)解释相关推荐

  1. matlab conv实现,MATLAB卷积运算(conv)以及通用的卷积函数my_conv的实现

    conv(向量卷积运算) 两个向量卷积,简单理解其实就是多项式乘法. 比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积计算方法如下: 把p的元素作为一个多项式的系数,多项式按升幂(或降 ...

  2. MATLAB卷积运算解释(conv、conv2、convn)

    二维离散卷积公式: =  第一部分 conv(向量卷积运算) 所谓两个向量卷积,说白了就是多项式乘法. 比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积如下: 把p的元素作为一个多项式 ...

  3. matlab中conv什么意思,matlab卷积函数conv matlab中conv()是什么意思?

    matlab中conv()是什么意思? conv(向量卷积运算) 两个向量卷积,简单理解其实就是多项式乘法. 比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积计算方法如下: 把p的元素 ...

  4. 数字信号处理matlab卷积函数conv,filter函数详细介绍三秒钟就看懂。

    %x (n) =sin( pi*n/ 5),-10<= 10 (正弦离散函数) n1=-10:1:10; x1=sin(pi*n1/5); subplot(2,2,1); stem(n1,x1, ...

  5. Matlab卷积函数之conv、deconv、conv2、convn

    目录 1.conv:卷积和多项式乘法 2.deconv2:去卷积和多项式除法 3.conv2:二维卷积 4.convn:N维卷积 1.conv:卷积和多项式乘法 matlab官网解释: 示例:求多项式 ...

  6. Matlab 卷积函数 ——conv2

    功能:是二维卷积运算函数(与convmtx2相似).如果a和b是两个离散变量n1和n2的函数,则关于a和b的二维卷积运算数学公式如下: 用法:C = conv2(A,B) C = conv2(hcol ...

  7. 序列的卷积运算与相关运算——MATLAB

    一.实验目的 1.掌握有限长序列线性卷积的编程计算原理,并能够利用Matlab或C语言编写算法程序进行线性卷积运算的程序实现; 2.学会线性卷积函数和线性相关函数的使用方法,并能利用二者进行有限长序列 ...

  8. 求助:MATLAB中实现卷积运算和理论分析中的卷积运算有什么区别?

    MATLAB中实现卷积运算和理论分析中的卷积运算有什么区别. 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页.如果你想学习如何使用Markdown编辑 ...

  9. matlab、C语言实现时域卷积运算

    背景 某次面试(岗位为音频算法)遇到了c语言实现卷积的编程题.当时不够精通c语言,写的程序比较垃圾.现在重新整理了一下. 原理 卷积公式: matlab有自带的计算卷积的函数conv() 根据公式,现 ...

最新文章

  1. 央行放水点燃房价,普通家庭如何理财?
  2. python函数手册 stata_Stata连享会-Python量化
  3. 另一种使用SAP SAT事务码对通过浏览器启动的应用的性能测量和分析方式
  4. 清北学堂培训2019.4.4
  5. “超大杯”版小米10被曝8月中下旬发布:100W快充实锤 处理器却成迷
  6. vuex中actions配合mutation处理axios请求
  7. 理解Python装饰器(Decorator)
  8. (转)Google Fonts 的介绍与使用
  9. php市场调查问卷模板,市场调查问卷范文
  10. android 时钟动态图标,神奇的Android动态时钟/时间UI界面
  11. 微信小游戏开发怎么选游戏引擎
  12. android qq截屏快捷键是什么,手机截屏的快捷键是什么,超过3种截图的快捷键操作方法!...
  13. 阿里巴巴的“双11”高并发秒杀终极版教程(Java语言设计)
  14. 60个可爱的云图案设计,激发你的灵感
  15. 客厅智能化(5、6)
  16. anaconda conda 切换为国内源 、windows 和 Linux配置方法、 添加清华源——【一文读懂】
  17. 鸿蒙系统越狱,Unc0ver越狱团队为其工具发布了一个新更新
  18. XH与PH排线的区别
  19. 关于html5 video全屏+自定义控制器
  20. ipmi屏幕(SOL)使用及问题总结

热门文章

  1. c语言geohash算法,geohash实现(c语言)
  2. 美素佳儿android app,AI婴语翻译神器——美素佳儿“宝宝不哭”百度智能小程序上线!...
  3. 普通人下班之后可以做什么副业,下班之后做的兼职推荐
  4. C语言QRCode二维码生成
  5. kodi没有中文设置_kodi播放器如何设置为中文界面-kodi播放器设置中文的方法 - 河东软件园...
  6. 【大咖有约】华泰证券管文琦:华泰证券分布式数据库演进之路
  7. 揭秘手机辐射之迷,教您正确使用手机
  8. 2021最新腾讯面经分享:知识大纲+技术文档+面试专题
  9. 基于Python/MATLAB长时间序列遥感数据处理及在全球变化、物候提取、植被变绿与固碳分析、生物量估算与趋势分析
  10. python字典编码_python字典操作大全,学习python第7天