互相关函数python实现的三种方法
? ? ?本人前段時間在做地震波分析的時候用到互相關(guān)函數(shù)的計算,所以做了一些具體的研究和分析。用python實(shí)現(xiàn)信號的互相關(guān)可以有三種方法:一、直接用時域法。二、用頻域法。三、python提供的numpy.correlate函數(shù)。現(xiàn)在把這三種方法都用于具體數(shù)據(jù)計算,并得到了幾乎一致的結(jié)果。具體python源代碼已經(jīng)上傳,可以在CSDN免費(fèi)下載。
互相關(guān)函數(shù)pyhton實(shí)現(xiàn)的三種方法-Python文檔類資源-CSDN下載
互相關(guān)函數(shù)計算的基本原理:
1、對于信號 ,它們的互相關(guān)公式為:
????????????????????????
在時域方法中,我們可以將上面的公式進(jìn)行離散化,就可以做具體計算。
2、但時域法的計算量比較大,我可以用頻域法做計算,它的原理如下:
如果 為 、 互相關(guān)函數(shù)的傅里葉變換:
? ? ? ? ? ? ? ? ? ? ? ? ?
根根據(jù)積分交換性質(zhì)和卷積定理:
? ? ? ? ? ? ? ? ? ? ? ??
它的傅里葉逆變換就是我們所需要的互相關(guān)函數(shù):
? ? ? ? ? ? ? ? ? ? ? ? ?
所以只要根據(jù)傅里葉變換計算出 ,就可以得到 。那么它的傅里葉逆變換就是兩個信號的互相關(guān)函數(shù)。
3、python的numpy.correlate也提供的具體的計算函數(shù),(很簡單,不需要涉及細(xì)節(jié))。
具體實(shí)現(xiàn):
現(xiàn)在把各種方法進(jìn)行的過程,用圖像的方法展示一下,可以參考源代碼獲得更多的處理細(xì)節(jié)。
程序運(yùn)行的結(jié)果如下:
[xxxxx@localhost corraltion]# ./cmpcor.py
time out Maxvalue: 98449.9225242
fft out Maxvalue: 98449.9225242
two mode max bias between using fft and using Time: 1.45519152284e-10
two mode max bias between using np.correlate and using Time: 0.0
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖1? 時域法和頻域法實(shí)現(xiàn)的細(xì)節(jié)和結(jié)果?
對比用時域法和python提供的correlate計算結(jié)果完全一致,用頻域法會有和時域法計算結(jié)果有極其
微小的偏差。?
總結(jié)
以上是生活随笔為你收集整理的互相关函数python实现的三种方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 佳能打印机 android,佳能打印机手
- 下一篇: ANNOVAR region-based