沿矩阵的每一行进行一维卷积

时间:2015-03-27 02:28:21

标签: matlab matrix convolution

快速搜索并且找不到相关内容。假设我有一个2D矩阵和1D'响应函数'。我想用响应函数对2D矩阵的每一行进行卷积。我可以通过以下方式做到这一点:

for i=1:numrows
    answer(:,i) = conv(2dmatrix(:,i),response_function,'same');
end

但它超级慢!加速这个的任何提示?

由于

2 个答案:

答案 0 :(得分:3)

此代码在随机生成的矩阵中重现您的结果:

conv2(response_function,1,2dmatrix,'same')

conv2允许您分别沿着行和列进行卷积,因此不对行1执行任何操作,并按response_function对列进行卷积。

要沿每一行进行卷积,请交换前两个函数参数的顺序。

答案 1 :(得分:1)

conv2的语法有些怪异,我更喜欢使用convn for generalized n dimensional convolution.,当输入之一只是行向量时,其他维的卷积实际上就是与[1]的卷积,因此不会改变任何东西,只是沿每行执行卷积。同样,如果矩阵与列向量进行卷积,则沿每个列进行卷积。

answer = convn(2dmatrix, response_function);