MATLAB:部分卷积

时间:2014-07-21 14:13:42

标签: matlab convolution

我有两个大小相同的数据数组(主要是零,并且稀疏地填充了一些),然后生成它的conv。结果我得到this

现在可以看到-10 ^ { - 5}附近的峰值。我的问题是,我怎么能进行卷积,这样我才能在这个峰值周围得到一个小区域?

我知道convolution is defined从负无穷大到无穷大。在数学上我想将这些限制改为(在我的例子中)[ - 1.5 * 10 ^ 5,-0.5 * 10 ^ -5]。

非常感谢你的帮助!


修改

我找到了解决方案:可以使用xcorr(a,fliplr(b))代替conv(a,b)。现在xcorr有“maxlags”选项,这正是我要搜索的内容。

1 个答案:

答案 0 :(得分:0)

您可以减少conv的输出值数量,但不能任意减少。{p>试试'same''valid'选项:

  

C = CONV(A,B,SHAPE)返回卷积的一个子部分,其大小由SHAPE指定:

  'full'  - (default) returns the full convolution,
  'same'  - returns the central part of the convolution
            that is the same size as A.
  'valid' - returns only those parts of the convolution 
            that are computed without the zero-padded edges. 
            LENGTH(C)is MAX(LENGTH(A)-MAX(0,LENGTH(B)-1),0).

要指定任意输出限制,您可能需要使用用户定义的函数手动进行卷积。但是使用conv然后修剪输出可能更有效。