matlab——conv函数的使用
·

% 语法
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
更多推荐



所有评论(0)