Convolution using convn does not give expected result
1 回表示 (過去 30 日間)
古いコメントを表示
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 件のコメント
採用された回答
Matt J
2022 年 1 月 14 日
編集済み: Matt J
2022 年 1 月 14 日
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 件のコメント
Matt J
2022 年 1 月 14 日
編集済み: Matt J
2022 年 1 月 14 日
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?
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!