對卷積(convolution)的理解

參考文章
 
numpy中的一維的卷積
 
 

np.convolve([1,2,3,4],[1,1,3],'full')       

 

                                                              n                              m
                                                  a(被卷積函數)           v(內核)
----------------------------------full-------------------------------------
full模式下
step1:1 2 3  4                          a[n]*v[0]
step2 :    1 2  3   4                     a[n]*v[1]
step3 :       3  6   9  12               a[n]*v[2]                
得出卷積的結果是 1 3 8 13 13 12   結果個數是 n+m-1
----------------------------------valid-------------------------------------
valid模式下 數學計算方法
 
=將 v偏轉180度,變成[3,1,1]*   [1]           [3,1,1]*   [2]           
                                                       [2]                                [3] 
                                                       [3]                                [4] 
                                                       
= [8,13]
若是按照實際意義,就是取 徹底重合的狀況
 
 

 

 
--------------------------------same-----------------------------------------
same模式下 數學計算方法 ,a先後各補一個0,卷積四次
=將 v偏轉180度,變成[3,1,1]*   [0]           [3,1,1]*   [1]           [3,1,1]*   [2]           [3,1,1]*   [3]           
                                                       [1]                              [2]                              [3]                              [4]
                                                       [2]                              [3]                              [4]                              [0]
                                                      
                                                       
= [3,8,13,13]
若是按照實際意義,就是取 有重合的狀況
 

 

 
 
 
 
多維的狀況相似,對v和a進行,以下變換
卷積過程先將卷積核v旋轉180°,被卷積矩陣a擴展到(m+n)*(m+n)大小,將擴展部分用0代替,其序號用負數代替;
相關文章
相關標籤/搜索