MATLAB: Output of the function conv2 is not the size I expected

conv2

Hello,
I am trying to use the conv2 function to convolute a matrix with a filter for the creation of a convolutional neural network. Take the following 3 by 3 matrix:
A = [1 2 3; 4 5 6; 7 8 9];
and the filter:
B = [1 0; 0 1];
For a stride of 1, my understanding of convolution from the examples I have seen is that the output should be (1*1) + (0*2) + (0*4) + (5*1) = 6 for the first element in the resulting matrix and (1*2) + (0*3) + (0*5) + (1*6) = 8 for the second element and so on until the filter reaches the bottom lower half of A for a final result of
ans = [6 8; 12 14];
when I use the conv2 function my results is:
conv2(A,B) = [1 2 3 0
4 6 8 3
7 12 14 6
0 7 8 9];
where my expected answer is in the middle of the output. Where do these extra numbers come from?

Best Answer

Reverse the order of the arguments (so that the smaller size matrix is first), then use the 'same' shape argument:
C = conv2(B,A,'same')
produces:
C =
6 8
12 14