Matlab 卷积“相同”

问题描述 投票:0回答:2

我阅读了有关卷积的 Matlab 文档,我发现了这个:

u = [-1 2 3 -2 0 1 2]; v = [2 4 -1 1]; w = conv(u,v,'same')

答案是

 w = 15     5    -9     7     6     7    -1

你知道w是怎么计算的吗?我知道你如何计算正常的卷积乘积,但是这个呢?

感谢您提前提供的帮助!

matlab convolution
2个回答
0
投票

显然你的问题是当形状设置为“相同”时如何确定卷积的限制。根据 Matlab 提供的“全”形状卷积,“相同”子向量可以计算如下:

u = [-1 2 3 -2 0 1 2];
v = [2 4 -1 1];
w = conv(u,v,'same');

w_full = conv(u,v,'full'); % full size (zero-padded) convolution
w = w_full(floor(length(u)/2) + (1:length(v))); % 'same' like convolution

0
投票

其实上面的答案几乎是正确的,除了代码最后一行的u和v放错了地方。那就是:

w = w_full(floor(length(v)/2) + (1:length(u))); % 'same' like convolution

毕竟输出的长度与u的长度相同,而不是v的长度。

© www.soinside.com 2019 - 2024. All rights reserved.