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!