【matlab函数】convn多维卷积

来源:互联网 发布:数码合成软件nuke 编辑:程序博客网 时间:2024/04/28 22:59

简单的卷积就不说了,向量卷积用此函数与用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) =    48ans(:,:,2) =   104ans(:,:,3) =    65>> convn(A(:,:,2),B,'valid')ans =   104>> 

分析:

卷积结果同样分为三维:

第一维结果来源于A(:,:,1)与B的卷积结果

第二维结果来源于A(:,:,2)与B的卷积结果【从代码最后一行能看出来】

第三维结果来源于A(:,:,3)与B的卷积结果

【注意】利用conv、conv2以及convn卷积时,卷积核默认被旋转了180°

0 0
原创粉丝点击