I need to implement the conv2 function for a the HDL coder since it's not supported, I believe that I have the main function down, what I'm struggling with is the implementation of conv2 'valid' which is described in the documentation with — Returns only parts of the convolution that are computed without zero-padded edges-
The code for conv2 is the one I'm sharing, any help would be appreciated.
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); endendB = 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 endend
Best Answer