As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center 指导。
8年前关闭。
我正在玩 Matlab 并尝试各种不同的东西,并找出不使用内置函数来实现目标的方法。
显然 Matlab(根据谷歌和他们的网站)不发布“conv2”函数的源代码。 .
是否有“conv2(h1, h2, A)”的替代函数或一种在不使用 Matlabs
Matlab 中的
- - 编辑 - -
这是 使用 使用傅立叶变换:
8年前关闭。
我正在玩 Matlab 并尝试各种不同的东西,并找出不使用内置函数来实现目标的方法。
显然 Matlab(根据谷歌和他们的网站)不发布“conv2”函数的源代码。 .
是否有“conv2(h1, h2, A)”的替代函数或一种在不使用 Matlabs
conv2
的情况下编写自己版本的方法。Matlab 中的
help
选项/关键字并没有真正帮助我- - 编辑 - -
这是
conv2(A,B)
的替代代码。但我正在寻找类似的东西来处理 conv2(h1,h2,A)
function B = convolve(A, k);
[r c] = size(A);
[m n] = size(k);
h = rot90(k, 2);
center = floor((size(h)+1)/2);
left = center(2) - 1;
right = n - center(2);
top = center(1) - 1;
bottom = m - center(1);
Rep = zeros(r + top + bottom, c + left + right);
for x = 1 + top : r + top
for y = 1 + left : c + left
Rep(x,y) = A(x - top, y - left);
end
end
B = zeros(r , c);
for x = 1 : r
for y = 1 : c
for i = 1 : m
for j = 1 : n
q = x - 1;
w = y -1;
B(x, y) = B(x, y) + (Rep(i + q, j + w) * h(i, j));
end
end
end
end
最佳答案
这里有一些不用 conv2
做卷积的想法
im2col
将滑动窗口转换为列,然后在每一列上并行执行卷积。 ifft(fft(A).*fft(B))
- 您必须先填充内核。 关于matlab - Matlab 中 conv2 的替代方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14864315/