【matlab函式】convn多維卷積
阿新 • • 發佈:2019-01-04
簡單的卷積就不說了,向量卷積用此函式與用conv效果相同,矩陣卷積用此函式與conv2的二維卷積效果相同。
此函式的方便之處在於支援三維卷積:其實相對於conv2來說就是省了一個for迴圈。對於三維卷積,比如A矩陣大小為[2,3,3],B矩陣大小為[2,3],計算A與B的卷積結果就是過程就是對於A矩陣的第三維的每一維分別卷積,等價於利用conv2利用卷積核B對A每一維卷積三次。看程式碼:
>> A(:,:,1)=[1 2 3;4 5 6]; >> A(:,:,2)=[7 8 9;6 5 2]; >> A(:,:,3)=[2 5 8;3 2 1]; >> B=[1,2,3;,4,3,2]; >> convn(A,B,'valid') ans(:,:,1) = 48 ans(:,:,2) = 104 ans(:,:,3) = 65 >> convn(A(:,:,2),B,'valid') ans = 104 >>
分析:
卷積結果同樣分為三維:
第一維結果來源於A(:,:,1)與B的卷積結果
第二維結果來源於A(:,:,2)與B的卷積結果【從程式碼最後一行能看出來】
第三維結果來源於A(:,:,3)與B的卷積結果
【注意】利用conv、conv2以及convn卷積時,卷積核預設被旋轉了180°