function [ d ] = Jconv( a , b ) %JCONV Summary of this function goes here % Detailed explanation goes here x1 = size(a,2); y1 = size(a,1); x2 = size(b,2); y2 = size(b,1); % H = y1 + y2 - 1; % W = x1 + x2 - 1; H = y1 + y2 - 1; W = x1 + x2 - 1; c = zeros(H,W,'double'); k1 = floor((H - 1) / 2 ); k2 = floor((W - 1) / 2 ); for m = 1 : k1+1 for n = 1 : k2+1 for i = 1 : m for j = 1 : n c(m,n) = c(m,n) + a(i,j) * b(m-i+1,n-j+1); end end end for n = k2 + 2 : W for i = 1 : m for j = n : W c(m,n) = c(m,n) + a(i,j-k2) * b(m+1-i,n+1-j+k2); end end end end for m = k1+2 : H for n = 1 : k2+1 for i = m : H for j = 1 : n c(m,n) = c(m,n) + a(i-k1,j) * b(m+1-i+k1,n-j+1); end end end for n = k2 + 2 : W for i = m : H for j = n : W c(m,n) = c(m,n) + a(i-k1,j-k2) * b(m+1-i+k1,n+1-j+k2); end end end end d = zeros(y1,x1,'double'); d(1:y1,1:x1) = c(1+floor(k1/2):y1+floor(k1/2),1+floor(k2/2):x1+floor(k2/2)); end