如何在 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');
假设我有 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');