Output of the function conv2 is not the size I expected?
3 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
John Thress
il 17 Lug 2019
Commentato: Star Strider
il 17 Lug 2019
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 Commenti
Risposta accettata
Star Strider
il 17 Lug 2019
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 Commenti
Star Strider
il 17 Lug 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.
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Fourier Analysis and Filtering in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!