Output of the function conv2 is not the size I expected?
조회 수: 3 (최근 30일)
이전 댓글 표시
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
채택된 답변
Star Strider
2019년 7월 17일
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
댓글 수: 2
Star Strider
2019년 7월 17일
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.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!