>>importnumpyasnp>>>x=np.array([1,2,3])>>>h=np.array([4,5,6])>>>importscipy.signal>>>scipy.signal.convolve(x,h)#卷積運算array([4,13,28,27,18])卷積運算大致可以分成3步,首先先翻轉,讓兩個信號列反過來,如上面就是1,2,3" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

python scipy卷積運算的實現方法

系統 2200 0

scipy的signal模塊經常用于信號處理,卷積、傅里葉變換、各種濾波、差值算法等。

*兩個一維信號卷積

            
>>> import numpy as np
>>> x=np.array([1,2,3])
>>> h=np.array([4,5,6])
>>> import scipy.signal
>>> scipy.signal.convolve(x,h) #卷積運算
array([ 4, 13, 28, 27, 18])
          

卷積運算大致可以分成3步,首先先翻轉,讓兩個信號列反過來,如上面就是1,2,3和6,5,4。然后作平移,6,5,4最開始在1,2,3的左邊,沒有重疊,現在向右移動,4和1就重疊了。對于重疊的部分,作乘積求和。也就是1x4得到第一個結果1,然后再移動后5x1+4x2得到第二個結果13以此類推。

卷積運算可以用來做大整數的乘法(數組表示數的乘法),比如在上面的例子中,要求123乘以456,可以先得到它的卷積序列,然后從后往前,18將8保留,進位1給27;然后27變成28,把8保留進位2給28;然后28變成30,把0保留進位3給13;然后13變成16,把6保留進位1給4;4變成5即是最高位。也就是乘法的結果是56088。

*對白噪聲卷積

            
>>> import numpy as np
>>> from scipy import signal
>>> import matplotlib.pyplot as plt
>>> sig=np.random.randn(1000) #生成隨機數
>>> autocorr=signal.fftconvolve(sig,sig[::-1],mode='full') #fft算法實現卷積
>>> fig,(ax_orig,ax_mag)=plt.subplots(2,1) #建立兩行一列圖形
>>> ax_orig.plot(sig) #在第一行把原始的隨機數序列sig畫出來
[
            
              ]
>>> ax_orig.set_title('White noise') #設置標題'白噪聲'

              
                
>>> ax_mag.plot(np.arange(-len(sig)+1,len(sig)),autocorr) #卷積后的圖像
[
                
                  ]
>>> ax_mag.set_title('Autocorrelation') #設置標題

                  
                    
>>> fig.tight_layout() #此句可以防止圖像重疊
>>> fig.show() #顯示圖像
                  
                
              
            
          

fftconvolve只是用fft算法(快速傅立葉變換)實現的卷積,其結果應當和普通的convolve一樣。

python scipy卷積運算的實現方法_第1張圖片

*二維圖像卷積運算

            
>>> import numpy as np
>>> from scipy import signal
>>> from scipy import misc
>>> import matplotlib.pyplot as plt
>>> face=misc.face(gray=True) #創建一個灰度圖像
>>> scharr=np.array([[-3-3j,0-10j,+3-3j],
    [-10+0j,0+0j,+10+0j],
     [-3+3j,0+10j,+3+3j]]) #設置一個特殊的卷積和
>>> grad=signal.convolve2d(face,scharr,boundary='symm',mode='same') #把圖像的face數組和設計好的卷積和作二維卷積運算,設計邊界處理方式為symm
>>> fig,(ax1,ax2)=plt.subplots(1,2,figsize=(10,6)) #建立1行2列的圖fig
>>> ax1.imshow(face,cmap='gray') #顯示原始的圖

            
              
>>> ax1.set_axis_off() #不顯示坐標軸
>>> ax2.imshow(np.absolute(grad),cmap='gray') #顯示卷積后的圖

              
                
>>> ax2.set_axis_off() #不顯示坐標軸
>>> fig.show() #顯示繪制好的畫布
              
            
          

二維的卷積需要用上面的signal.convolve2d()。

之所以要對卷積后的圖像數組grad作np.absolute()求絕對值運算是因為灰度圖像的值都是正值,沒有負的,為了防止出現負值所以才這樣做。

python scipy卷積運算的實現方法_第2張圖片 ?

二維的卷積運算還有一種函數,是signal.sepfir2d(),它可以傳入三個參數,后兩個參數指定行和列的卷積和(兩個方向上的卷積是可以不同的,分別指定卷積和序列)。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 91久草视频| 亚洲精品久久久午夜伊人 | 99久久久免费精品免费 | 狠狠色狠狠色综合网 | 国产精品久久久久a影院 | 天天操天天干天天干 | 五月狠狠亚洲小说专区 | 伊人成影院九九 | 久草免费在线 | 欧美一级刺激毛片 | 色拍自拍亚洲综合在线 | 99久久99久久精品免费看蜜桃 | 看全色黄大色大片免费久久久 | 99久久精品免费看国产情侣 | 国产99re在线观看只有精品 | 国产亚洲精品九九久在线观看 | 久久欧美 | 国产精品合集久久久久青苹果 | 鲁一鲁中文字幕久久 | 日本一级特黄毛片免费视频 | 日本一级特黄毛片高清视频 | 欧美毛片免费看 | 久久亚洲精品久久久久 | xxx色视频 | 亚洲精品mv在线观看 | 毛片1级| 亚洲一区二区三区中文字幕 | 很很色在线视频 | 亚洲色图插插插 | 99久久精品免费看国产高清 | 亚洲精品丝袜在线一区波多野结衣 | 欧美在线视频免费看 | 亚洲免费在线观看 | 欧美视频一区二区三区在线观看 | 国产精品久草 | 久久中文字幕一区二区三区 | 色偷偷在线刺激免费视频 | 日本一区二区三区不卡在线视频 | 日日夜夜免费视频 | 福利视频第一页 | 久久久久欧美精品观看 |