如何在 Matlab 中计算一维卷积?

How to compute 1D convolution in Matlab?

假设我有 2 个向量,数据向量:

x=[2 1 2 1]

和权重向量

y=[1 2 3]

我希望 Matlab 在一维神经网络的意义上对这些向量进行卷积,即 运行 y 作为 window 针对 x 并计算卷积:

如果我 运行 built-in function conv 那么我得到

>> conv(x,y)
ans =
     2     5    10     8     8     3

它在中间包含正确的值,但在边缘有一些未知的东西。 conv 函数的手册看起来与我想要的完全不同。

如果我运行

>> conv(x,y, 'same')
ans =
     5    10     8     8

我也发现了一些奇怪的东西。

通过指定 conv 的 3rd 输入,您非常接近解决它,但是您应该使用 [= 而不是 'same' 14=]:

x = [2 1 2 1];
y = [1 2 3];
conv(x,y,'valid')

ans =

    10     8

只需反转过滤器:

x = [2,1,2,1];
y = [1,2,3];
z = conv(x,flip(y),'valid');