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

[复制链接]
发表于 2024-6-10 19:54:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
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、通过卷积盘算多项式乘法

代码及运算

  1. u = [1 0 1 1];
  2. v = [2 7 1];
  3. w = conv(u,v)
  4. w =
  5.      2     7     3     9     8     1
复制代码
3、 向量卷积

代码及运算

  1. u = [1 1 1 1];
  2. v = [1 1 1 1 0 0 0 1 1];
  3. w = conv(u,v)
  4. w =
  5.   列 1 至 11
  6.      1     2     3     4     3     2     1     1     2     2     2
  7.   列 12
  8.      1
复制代码
4、 卷积的中央部分

'same'代码及运算

  1. u = [-1 2 1 3 1 -2 0 1 2];
  2. v = [2 4 -1 1 1];
  3. w = conv(u,v,'same')
  4. w =
  5.     11     7    14     0    -5     8     7     5    -1
复制代码
 'full'代码及运算

  1. u = [-1 2 1 3 1 -2 0 1 2];
  2. v = [2 4 -1 1 1];
  3. w = conv(u,v,'full')
  4. w =
  5.   列 1 至 11
  6.     -2     0    11     7    14     0    -5     8     7     5    -1
  7.   列 12 至 13
  8.      3     2
复制代码
 'valid'代码及运算

  1. u = [-1 2 1 3 1 -2 0 1 2];
  2. v = [2 4 -1 1 1];
  3. w = conv(u,v,'valid')
  4. w =
  5.     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)二维卷积

代码及运算

  1. A = rand(3);
  2. B = rand(4);
  3. Cfull = conv2(A,B)%6*6
  4. Csame = conv2(A,B,'same')%中心部位
  5. Cfull =
  6.     0.0781    0.8435    1.6181    1.6544    1.5357    0.7213
  7.     0.2367    1.2223    2.9144    3.6484    2.8119    1.0920
  8.     0.5183    1.4313    3.4028    4.2039    3.0881    1.3723
  9.     0.2844    2.0170    2.9532    3.0694    2.6967    0.9839
  10.     0.4857    1.3186    1.8013    1.5967    1.3232    0.4820
  11.     0.5008    0.1639    0.8645    0.2304    0.3948    0.0831
  12. Csame =
  13.     3.4028    4.2039    3.0881
  14.     2.9532    3.0694    2.6967
  15.     1.8013    1.5967    1.3232
复制代码
 2)例子:提取二维台座边

代码及运算

  1. A = zeros(10);
  2. A(3:7,3:7) = ones(5);
  3. mesh(A)
复制代码
视图效果


1) 盘算水平边

代码及运算

  1. u = [1 0 -1]';
  2. v = [1 2 1];
  3. Ch = conv2(u,v,A);
  4. mesh(Ch)
复制代码
视图效果 

 

 2)盘算垂直边

代码及运算

  1. Cv = conv2(v,u,A);
  2. mesh(Cv)
复制代码
视图效果

 

3) 绘制组合边长


6、convn N 维卷积

语法

语法1:C = convn(A,B) 返回数组 A 和 B 的 N 维卷积。
语法2:C = convn(A,B,shape) 根据 shape 返回卷积的子区。
 1)三维卷积

代码及运算

  1. A = rand(2,3,2);
  2. B = 0.25*ones(2,2,2);
  3. C = convn(A,B)
  4. C(:,:,1) =
  5.     0.1765    0.2457    0.0935    0.0243
  6.     0.1845    0.2652    0.3109    0.2301
  7.     0.0080    0.0195    0.2174    0.2059
  8. C(:,:,2) =
  9.     0.3502    0.6570    0.4408    0.1340
  10.     0.4375    0.7644    0.7622    0.4352
  11.     0.0872    0.1074    0.3214    0.3013
  12. C(:,:,3) =
  13.     0.1737    0.4113    0.3472    0.1097
  14.     0.2530    0.4991    0.4512    0.2051
  15.     0.0793    0.0879    0.1040    0.0954
复制代码
代码及运算

  1. A = rand(2,3,2);
  2. B = 0.25*ones(2,2,2);
  3. C = convn(A,B,'same')
  4. C(:,:,1) =
  5.     1.1643    0.8855    0.4774
  6.     0.6798    0.4946    0.2022
  7. C(:,:,2) =
  8.     0.6049    0.4434    0.2044
  9.     0.3586    0.2106    0.0407
复制代码
代码及运算

  1. A = rand(2,3,2);
  2. B = 0.25*ones(2,2,2);
  3. C = convn(A,B,'full')
  4. C(:,:,1) =
  5.     0.0297    0.2697    0.3863    0.1463
  6.     0.1543    0.4794    0.5273    0.2023
  7.     0.1246    0.2097    0.1410    0.0560
  8. C(:,:,2) =
  9.     0.2176    0.5840    0.7355    0.3690
  10.     0.4059    1.0322    1.2911    0.6648
  11.     0.1884    0.4482    0.5556    0.2958
  12. C(:,:,3) =
  13.     0.1878    0.3143    0.3492    0.2227
  14.     0.2516    0.5528    0.7638    0.4625
  15.     0.0638    0.2385    0.4146    0.2398
复制代码
代码及运算

  1. A = rand(2,3,2);
  2. B = 0.25*ones(2,2,2);
  3. C = convn(A,B,'valid')
  4. C =
  5.     0.8574    0.8072
复制代码
 

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表