Convolution using convn does not give expected result
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Lieke Pullen
el 14 de En. de 2022
Dear all,
I am trying to use a kernel with values which should decrease the values in 3D array that you use. However, when I use convn and 'same', this leads to a plateau with a much higher value as the maximum value of the kernel. Am I using the wrong way to calculate the convolution, or what is happening?
load('s.mat')
A=ones(110,110,110);
C_con=convn(A,s_full,'same');
figure; surf(C_con(:,:,50));
0 comentarios
Respuesta aceptada
Matt J
el 14 de En. de 2022
Editada: Matt J
el 14 de En. de 2022
There's no reason to think convolution in general won't increase the values. As a trivial example:
A=ones(5);
B=convn(A,2,'same')
4 comentarios
Matt J
el 14 de En. de 2022
Editada: Matt J
el 14 de En. de 2022
You seem to be under the impression that convn(A,B) should always have the shape of B, but convolution is commutative, i.e., convn(A,B)= conv(B,A), so how can the shape of the result have more to do with B than with A? I could just as easily view A as the kernel here, so shouldn't the shape follow A rather than B?
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!