% 语法
w = conv(u,v)
w = conv(u,v,shape)

w = conv(u,v) 返回向量 u 和 v 的卷积。如果 u 和 v 是多项式系数的向量,对其卷积与将这两个多项式相乘等效。

w = conv(u,v,shape) 返回如 shape 指定的卷积的分段。例如,conv(u,v,'same') 仅返回与 u 等大小的卷积的中心部分,而 conv(u,v,'valid') 仅返回计算的没有补零边缘的卷积部分。

shape的参数有三个:

模式 输出长度 无效点分布
'full' N+M-1 头部M-1,尾部M-1
'same' N 头部约M/2,尾部约M/2
'valid' N-M+1

例子:

conv(x,h)相当于conv(x,h,'full'),以conv(x,h,'full')过程为例。

conv(x,h)如果h是[1,2,3],先翻转尾[3,2,1]再进行手动计算。

% x数组
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
% h数组
h = [1, 1, 1, 1, 1];

% 使用conv(u,v)
y = conv(x, h); %等效于 conv(x, h, 'full')

% 示例过程

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)    1 1 1 1 1
第一次输出:1

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)      1 1 1 1 1
第二次输出:3

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)        1 1 1 1 1
第三次输出:6

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)          1 1 1 1 1
第四次输出:10

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)            1 1 1 1 1
第五次输出:15

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)              1 1 1 1 1
第六次输出:20

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                1 1 1 1 1
第七次输出:25

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                  1 1 1 1 1
第八次输出:30

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                    1 1 1 1 1
第九次输出:35

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                      1 1 1 1 1
第十次输出:40

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                        1 1 1 1 1
第十一次输出:34

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                          1 1 1 1 1
第十二次输出:27

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                            1 1 1 1 1
第十三次输出:19

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                              1 1 1 1 1
第十四次输出:10


输出y = [1,3,6,10,15,20,25,30,35,40,34,27,19,10] 长度10+5-1=14

则conv(x,h,'same'),截断头部M/2=2点,截断尾部(M-1)/2=2点。

% x数组
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
% h数组
h = [1, 1, 1, 1, 1];

% 使用conv(u,v, 'same')
y = conv(x, h, 'same'); 

% 示例过程
x(n)            1 2 3 4 5 6 7 8 9 10
h(n)        1 1 1 1 1
第一次输出:6

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)          1 1 1 1 1
第二次输出:10

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)            1 1 1 1 1
第三次输出:15

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)              1 1 1 1 1
第四次输出:20

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                1 1 1 1 1
第五次输出:25

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                  1 1 1 1 1
第六次输出:30

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                    1 1 1 1 1
第七次输出:35

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                      1 1 1 1 1
第八次输出:40

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                        1 1 1 1 1
第九次输出:34

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                          1 1 1 1 1
第十次输出:27


输出y = [6,10,15,20,25,30,35,40,34,27] 长度10

则conv(x,h,'valid'),仅保留完全覆盖部分。

% x数组
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
% h数组
h = [1, 1, 1, 1, 1];

% 使用conv(u,v, 'valid')
y = conv(x, h, 'valid'); 

% 示例过程
x(n)            1 2 3 4 5 6 7 8 9 10
h(n)            1 1 1 1 1
第一次输出:15

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)              1 1 1 1 1
第二次输出:20

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                1 1 1 1 1
第三次输出:25

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                  1 1 1 1 1
第四次输出:30

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                    1 1 1 1 1
第五次输出:35

x(n)            1 2 3 4 5 6 7 8 9 10
h(n)                      1 1 1 1 1
第六次输出:40

输出y = [15,20,25,30,35,40] 长度10-5+1=6

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐