1. 程式人生 > >【matlab函式】convn多維卷積

【matlab函式】convn多維卷積

簡單的卷積就不說了,向量卷積用此函式與用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°