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
相关推荐
AndrewHZ1 小时前
【图像处理基石】如何入门色彩评估?
图像处理·人工智能·深度学习·色彩科学·hvs·色彩评估·颜色工程
lucky_lyovo1 小时前
卷积神经网络--网络性能提升
人工智能·神经网络·cnn
静心问道2 小时前
TrOCR: 基于Transformer的光学字符识别方法,使用预训练模型
人工智能·深度学习·transformer·多模态
亲持红叶2 小时前
GLU 变种:ReGLU 、 GEGLU 、 SwiGLU
人工智能·深度学习·神经网络·激活函数
绝顶大聪明10 小时前
【深度学习】神经网络-part2
人工智能·深度学习·神经网络
Danceful_YJ11 小时前
16.使用ResNet网络进行Fashion-Mnist分类
人工智能·深度学习·神经网络·resnet
甄卷14 小时前
李沐动手学深度学习Pytorch-v2笔记【08线性回归+基础优化算法】2
pytorch·深度学习·算法
豆豆14 小时前
神经网络构建
人工智能·深度学习·神经网络
一勺汤16 小时前
多尺度频率辅助类 Mamba 线性注意力模块(MFM),融合频域和空域特征,提升多尺度、复杂场景下的目标检测能力
深度学习·yolo·yolov12·yolo12·yolo12改进·小目标·mamba like
霖0018 小时前
神经网络项目--基于FPGA的AI简易项目(1-9图片数字识别)
人工智能·pytorch·深度学习·神经网络·机器学习·fpga开发