MATLAB Answers

## Output of the function conv2 is not the size I expected?

Asked by John Thress

### John Thress (view profile)

on 17 Jul 2019
Latest activity Commented on by Star Strider

### Star Strider (view profile)

on 17 Jul 2019
Accepted Answer by Star Strider

### Star Strider (view profile)

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?

#### 0 Comments

Sign in to comment.

## 1 Answer

### Star Strider (view profile)

Answer by Star Strider

### Star Strider (view profile)

on 17 Jul 2019
Accepted 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

John Thress

### John Thress (view profile)

on 17 Jul 2019
Thank you so much!
What was the previous operation doing? Or rather what was the reason for those extra numbers?
Star Strider

### Star Strider (view profile)

on 17 Jul 2019
As always, my pleasure!
It was giving the default ‘shape’ result of conv2, which is to say it produced the 'full' convolution. Using the 'same' argument with the arguments presented as you originally did:
C = conv2(A,B,'same')
would produce a (3x3) result.

Sign in to comment.