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]

注意:当确定是前一个序列用升幂或是降幂排列后,后一个序列也都要按这个方式排列,否则结果是不对的。

p = [1 2 3];q=[1 1];
conv(p,q)

ans =

 1     3     5     3

当然MATLAB的卷积函数还有conv2(二维矩阵卷积运算)和convn(n维卷积运算),可以去参考文档了解


那么这里的问题是,当两个序列不是从0开始时,必须对conv函数稍加扩展:

function [ y,ny ] = convu( h,nh,x,nx )
%CONVU 通用卷积函数
%   function [ y,ny ] = convu( h,nh,x,nx )
%   y为卷积结果向量,ny是y的位置向量,h和x是有限长序列
nys = nh(1)+nx(1);
nyf = nh(end)+nx(end);y = conv(h,x);
ny = nys:nyf;
end

知道了conv的这些用法之后,我便好奇想conv的实现过程:接下来是不使用conv的卷积函数,解释了
conv内部的计算过程:

function y = my_conv( x,h )
%MY_CONV 重写MATLAB内置卷积函数conv()
%   function y = my_conv( x,h )用来计算y(n) = h(n)*x(n)的卷积
nx = length(x);
nh = length(h);
y = zeros(1,nx+nh-1);
for index = 1:nxindexSum = x(index)*h;y(1,index:index+nh-1) = y(1,index:index+nh-1)+indexSum;
endend
function [ y,ny ] = my_convu( x,nx,h,nh )
%MY_CONVU 通用的卷积函数(不使用conv()实现)
%   function [ y,ny ] = my_convu( x,nx,h,nh )
%   用来计算y(n) = h(n)*x(n)的卷积
%   %   y为卷积结果向量,ny是y的位置向量,h和x是有限长序列
nys = nx(1)+nh(1);
nyf = nx(end)+nh(end);y = my_conv(h,x);
ny = nys:nyf;
end

测试my_conv函数:

%% 2.计算两个有限长序列的卷积
xn = [1 1 1 1 ];
hn = [1 1 1 1 ];
yn = my_conv(xn,hn);%% 3.编写通用卷积函数function [ y,ny ] = convu( h,nh,x,nx )
%如果h(n)=x(n)=R5(N+2),则计算y(n)=h(n)*x(n)的程序如下:
h = ones(1,5);nh = -2:2;
x = h;nx = nh;
[y,ny] = my_convu(h,nh,x,nx);

yn =

 1     2     3     4     3     2     1

y =

 1     2     3     4     5     4     3     2     1

MATLAB卷积运算(conv)以及通用的卷积函数my_conv的实现相关推荐

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

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

  2. 使用C语言实现卷积运算及移动平均滤波器

    文章目录 课题目标 一.首先实现功率为1的白噪声 二.卷积运算头文件 三.主函数 四.结果及结论 课题目标 使用C语言和卷积运算实现N点移动平均滤波器程序. 输入信号如下所示: (1)x[n]=sin ...

  3. 【15】opencv卷积运算

    参考: [OpenCV学习笔记]之卷积及卷积算子(convolution)_点滴成海~的博客-CSDN博客_卷积算子(关于卷积运算) opencv RNG函数 - 0MrMKG - 博客园(对于RNG ...

  4. tensorflow中转置卷积运算例子

    import tensorflow as tf import numpy as np import tensorflow as keras from tensorflow.keras import l ...

  5. CNN的卷积运算为何使用互相关而不是卷积

    CNN的卷积运算并非数学定义的卷积 也就是说,CNN中的运算是不需要翻转卷积核的. 也就是说,CNN在处理图像时的卷积核是不需要翻转180°的 我们来用代码看下为什么? #-*- coding:utf ...

  6. odoo pivot中去掉求和_一文读懂深度学习中的卷积运算与图像处理

    华为人工智能认证讲师 袁梦 在人工智能深度学习技术中,有一个很重要的概念就是卷积神经网络 CNN(Convolutional Neural Networks).卷积神经网络被广泛地运用到计算机视觉中, ...

  7. java 怎么做卷积运算,入门教程之算法系列(二):卷积运算与模糊操作

    卷积在信号处理领域有极其广泛的应用,也有严格的物理和数学定义. OpenCV中对图像进行模糊操作,其背后的原理就是卷积运算,可是究竟卷积运算是什么,模糊的卷积算法又是如何实现的呢?本文将进行讨论.考虑 ...

  8. 卷积运算与卷积核DLC

    一.卷积运算 在数学上,卷积的定义是:两个函数在反转和位移后的乘积的积分,其公式表现为: 其中称g为过滤器,f为信号. 但是在深度学习中,卷积并不进行反转,而是直接进行逐元素的乘法和加法(称互相关:一 ...

  9. 稀疏卷积 sparse conv

    如果某个卷积的任意输入神经元与任意输出神经元均存在连接,那么这类卷积称之为常规卷积(非稀疏卷积): 反之,如果存在输入神经元与输入神经元之间无连接,那么这类卷积称之为稀疏卷积. 组卷积group co ...

  10. 【深度学习入门-1】透彻理解卷积的三层含义:从“卷积”、到“图像卷积操作”、再到“卷积神经网络”的含义(学习笔记)

    一.写在前面 笔者在进行卷积神经网络入门的时候花了很多功夫,理解的也不够透彻,基础不牢,地动山摇.在查阅了很多资料后,发现了大佬up"王木头学科学"讲的卷积神经网络的理解,茅塞顿开 ...

最新文章

  1. 《未来简史》五、你我正处在一列没有刹车的快车上,狂奔成“神”
  2. 金融业加速智能化,解析360金融AI基础架构和应用
  3. 取一定范围内随机小数 c_随机振动测试中的常见试验条件有哪些?
  4. 得到java异常printStackTrace的详细信息
  5. 防止网页被嵌入框架的代码(续)
  6. pcb入门之新建工程
  7. 关于解释List<Integer> list = new ArrayList<Integer>()
  8. php屏蔽审查元素,HTML网站右键禁用F12代码 屏蔽审查元素 防止修改页面代码
  9. 计算机硬件教学设计高中信息,重大版信息技术七上《计算机硬件系统》教学设计.doc...
  10. 制作加密狗程序_【火腿DIY】用于SDR应用程序的自定义热键键盘 | 视障人士的选择...
  11. Upload LABS Pass-8
  12. Android: app不被系统kill掉
  13. ubuntu切换到root
  14. Google是如何赚钱的 -- 四年工作离别小结
  15. atitit 业务 触发器原理. 与事件原理 docx
  16. eclipse在线汉化站点
  17. Vue中用到jeDate日期控件,Vue对象中的值滞后,总是滞后当前选择的值
  18. 计算机窗口底色,将电脑的窗口背景调成护眼色-电脑护眼设置
  19. java的create vm_JNI_CreateJavaVM(Runtime::Create())
  20. 用react-custom-scrollbars插件美化 滚动条

热门文章

  1. 远程服务器窗口调大,远程桌面缩放
  2. MTK通用驱动的安装
  3. 1.30 fcntl函数
  4. Mac 修改Hosts文件的方式
  5. MySQL可视化工具使用
  6. 如何制作多合一Windows镜像
  7. Subversive-connectors 下载地址
  8. java随机点名器_基于JavaScript实现随机点名器
  9. NB-IOT开发实战
  10. webstorm主题更换和webstorm汉化