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

打印 上一主题 下一主题

主题 520|帖子 520|积分 1560

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
复制代码
 


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

我爱普洱茶

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表