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
相关推荐
恒知学术41 分钟前
SCI 文献怎么检索?英文关键词、DOI、被引量和开放获取线索整理
人工智能·深度学习·sci·文献检索·谷歌学术·doi
老刘说AI1 小时前
SGLang 深度优化: Radix 缓存与复杂任务的极致吞吐
人工智能·神经网络·机器学习·缓存·架构·sglang
我登哥MVP2 小时前
Headroom 深度指南:AI Agent 上下文压缩实战
人工智能·python·深度学习·神经网络·机器学习·自然语言处理·pip
OpenApi.cc2 小时前
来了,来了,我来了,Mocode
人工智能·深度学习·神经网络·目标检测·数据挖掘
hongyucai3 小时前
大模型常见问题整理
人工智能·深度学习
再渊4 小时前
基因归因到底怎么计算的?
python·深度学习·机器学习
HiDev_5 小时前
【非标自动化】2、认识元器件(接近传感器)
人工智能·深度学习·自动化
ShallWeL5 小时前
【机器学习】(25)—— 反向传播
人工智能·神经网络·机器学习
phltxy6 小时前
LangGraph智能租房助手实践
大数据·人工智能·python·深度学习·语言模型·langchain
OpenApi.cc6 小时前
Mocode 开发文档平台
人工智能·深度学习·目标检测·自然语言处理·语音识别