31、matlab卷积运算:卷积运算、二维卷积、N维卷积

1、conv 卷积和多项式乘法

语法

语法1:w = conv(u,v) 返回向量 u 和 v 的卷积。

语法2:w = conv(u,v,shape) 返回如 shape 指定的卷积的分段。

参数

u,v --- 输入向量 shape --- 卷积的分段 'full' (默认) | 'same' | 'valid'

'full':全卷积 'same':与u大小相同的卷积的中心部分'valid':计算没有补零边缘的卷积部分

2、通过卷积计算多项式乘法

代码及运算

Matlab 复制代码
u = [1 0 1 1];
v = [2 7 1];
w = conv(u,v)

w =

     2     7     3     9     8     1

3、 向量卷积

代码及运算

Matlab 复制代码
u = [1 1 1 1];
v = [1 1 1 1 0 0 0 1 1];
w = conv(u,v)

w =

  列 1 至 11

     1     2     3     4     3     2     1     1     2     2     2

  列 12

     1

4、 卷积的中心部分

'same'代码及运算

Matlab 复制代码
u = [-1 2 1 3 1 -2 0 1 2];
v = [2 4 -1 1 1];
w = conv(u,v,'same')

w =

    11     7    14     0    -5     8     7     5    -1

'full'代码及运算

Matlab 复制代码
u = [-1 2 1 3 1 -2 0 1 2];
v = [2 4 -1 1 1];
w = conv(u,v,'full')

w =

  列 1 至 11

    -2     0    11     7    14     0    -5     8     7     5    -1

  列 12 至 13

     3     2

'valid'代码及运算

Matlab 复制代码
u = [-1 2 1 3 1 -2 0 1 2];
v = [2 4 -1 1 1];
w = conv(u,v,'valid')

w =

    14     0    -5     8     7

5、 conv2 二维卷积

语法

语法1:C = conv2(A,B) 返回矩阵 A 和 B 的二维卷积。

语法2:C = conv2(u,v,A) 首先求 A 的各列与向量 u 的卷积,然后求每行结果与向量 v 的卷积。

语法3:C = conv2(___,shape) 根据 shape 返回卷积的子区。

1)二维卷积

代码及运算

Matlab 复制代码
A = rand(3);
B = rand(4);
Cfull = conv2(A,B)%6*6
Csame = conv2(A,B,'same')%中心部位

Cfull =

    0.0781    0.8435    1.6181    1.6544    1.5357    0.7213
    0.2367    1.2223    2.9144    3.6484    2.8119    1.0920
    0.5183    1.4313    3.4028    4.2039    3.0881    1.3723
    0.2844    2.0170    2.9532    3.0694    2.6967    0.9839
    0.4857    1.3186    1.8013    1.5967    1.3232    0.4820
    0.5008    0.1639    0.8645    0.2304    0.3948    0.0831


Csame =

    3.4028    4.2039    3.0881
    2.9532    3.0694    2.6967
    1.8013    1.5967    1.3232

2)例子:提取二维台座边

代码及运算

Matlab 复制代码
A = zeros(10);
A(3:7,3:7) = ones(5);
mesh(A)

视图效果

1) 计算水平边

代码及运算

Matlab 复制代码
u = [1 0 -1]';
v = [1 2 1];
Ch = conv2(u,v,A);
mesh(Ch)

视图效果

2)计算垂直边

代码及运算

Matlab 复制代码
Cv = conv2(v,u,A);
mesh(Cv)

视图效果

3) 绘制组合边长

6、convn N 维卷积

语法

语法1:C = convn(A,B) 返回数组 A 和 B 的 N 维卷积。

语法2:C = convn(A,B,shape) 根据 shape 返回卷积的子区。

1)三维卷积

代码及运算

Matlab 复制代码
A = rand(2,3,2);
B = 0.25*ones(2,2,2);
C = convn(A,B)

C(:,:,1) =

    0.1765    0.2457    0.0935    0.0243
    0.1845    0.2652    0.3109    0.2301
    0.0080    0.0195    0.2174    0.2059


C(:,:,2) =

    0.3502    0.6570    0.4408    0.1340
    0.4375    0.7644    0.7622    0.4352
    0.0872    0.1074    0.3214    0.3013


C(:,:,3) =

    0.1737    0.4113    0.3472    0.1097
    0.2530    0.4991    0.4512    0.2051
    0.0793    0.0879    0.1040    0.0954

代码及运算

Matlab 复制代码
A = rand(2,3,2);
B = 0.25*ones(2,2,2);
C = convn(A,B,'same')

C(:,:,1) =

    1.1643    0.8855    0.4774
    0.6798    0.4946    0.2022


C(:,:,2) =

    0.6049    0.4434    0.2044
    0.3586    0.2106    0.0407

代码及运算

Matlab 复制代码
 A = rand(2,3,2);
B = 0.25*ones(2,2,2);
C = convn(A,B,'full')

C(:,:,1) =

    0.0297    0.2697    0.3863    0.1463
    0.1543    0.4794    0.5273    0.2023
    0.1246    0.2097    0.1410    0.0560


C(:,:,2) =

    0.2176    0.5840    0.7355    0.3690
    0.4059    1.0322    1.2911    0.6648
    0.1884    0.4482    0.5556    0.2958


C(:,:,3) =

    0.1878    0.3143    0.3492    0.2227
    0.2516    0.5528    0.7638    0.4625
    0.0638    0.2385    0.4146    0.2398

代码及运算

Matlab 复制代码
A = rand(2,3,2);
B = 0.25*ones(2,2,2);
C = convn(A,B,'valid')

C =

    0.8574    0.8072
相关推荐
糖豆豆今天也要努力鸭11 分钟前
torch.__version__的torch版本和conda list的torch版本不一致
linux·pytorch·python·深度学习·conda·torch
何大春27 分钟前
【弱监督语义分割】Self-supervised Image-specific Prototype Exploration for WSSS 论文阅读
论文阅读·人工智能·python·深度学习·论文笔记·原型模式
Suyuoa1 小时前
附录2-pytorch yolov5目标检测
python·深度学习·yolo
余生H2 小时前
transformer.js(三):底层架构及性能优化指南
javascript·深度学习·架构·transformer
代码不行的搬运工2 小时前
神经网络12-Time-Series Transformer (TST)模型
人工智能·神经网络·transformer
罗小罗同学2 小时前
医工交叉入门书籍分享:Transformer模型在机器学习领域的应用|个人观点·24-11-22
深度学习·机器学习·transformer
孤独且没人爱的纸鹤3 小时前
【深度学习】:从人工神经网络的基础原理到循环神经网络的先进技术,跨越智能算法的关键发展阶段及其未来趋势,探索技术进步与应用挑战
人工智能·python·深度学习·机器学习·ai
阿_旭3 小时前
TensorFlow构建CNN卷积神经网络模型的基本步骤:数据处理、模型构建、模型训练
人工智能·深度学习·cnn·tensorflow
羊小猪~~3 小时前
tensorflow案例7--数据增强与测试集, 训练集, 验证集的构建
人工智能·python·深度学习·机器学习·cnn·tensorflow·neo4j
极客代码3 小时前
【Python TensorFlow】进阶指南(续篇三)
开发语言·人工智能·python·深度学习·tensorflow