快速搜索并且找不到相关内容。假设我有一个2D矩阵和1D'响应函数'。我想用响应函数对2D矩阵的每一行进行卷积。我可以通过以下方式做到这一点:
for i=1:numrows
answer(:,i) = conv(2dmatrix(:,i),response_function,'same');
end
但它超级慢!加速这个的任何提示?
由于
答案 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);