【发布时间】:2016-04-16 22:27:39
【问题描述】:
我得到了这个代码来计算两个给定数组的二维卷积。
[r,c] = size(x);
[m,n] = size(y);
h = rot90(y, 2);
center = floor((size(h)+1)/2);
Rep = zeros(r + m*2-2, c + n*2-2);
return
for x1 = m : m+r-1
for y1 = n : n+r-1
Rep(x1,y1) = x(x1-m+1, y1-n+1);
end
end
B = zeros(r+m-1,n+c-1);
for x1 = 1 : r+m-1
for y1 = 1 : n+c-1
for i = 1 : m
for j = 1 : n
B(x1, y1) = B(x1, y1) + (Rep(x1+i-1, y1+j-1) * h(i, j));
end
end
end
end
如何矢量化它,所以不存在 for 循环? 提前致谢。
【问题讨论】:
-
这与您的previous post 有何不同?
-
在上一篇文章中,我试图更笼统,不显示所有代码。
-
请不要打开重复的问题。如果您想澄清某些事情,请将新信息编辑到现有问题中。
-
好的。我将删除之前的问题。您知道如何实现这种矢量化吗?
-
第一个循环只是用零填充输入数组,对吗?我不确定我在那里理解你的数学。对于第二个循环,我们可以使用
im2col。我会让那部分工作并检查我的代码。
标签: arrays matlab loops vectorization convolution