互相关函数python实现的三种方法
? ? ?本人前段時間在做地震波分析的時候用到互相關函數的計算,所以做了一些具體的研究和分析。用python實現信號的互相關可以有三種方法:一、直接用時域法。二、用頻域法。三、python提供的numpy.correlate函數。現在把這三種方法都用于具體數據計算,并得到了幾乎一致的結果。具體python源代碼已經上傳,可以在CSDN免費下載。
互相關函數pyhton實現的三種方法-Python文檔類資源-CSDN下載
互相關函數計算的基本原理:
1、對于信號 ,它們的互相關公式為:
????????????????????????
在時域方法中,我們可以將上面的公式進行離散化,就可以做具體計算。
2、但時域法的計算量比較大,我可以用頻域法做計算,它的原理如下:
如果 為 、 互相關函數的傅里葉變換:
? ? ? ? ? ? ? ? ? ? ? ? ?
根根據積分交換性質和卷積定理:
? ? ? ? ? ? ? ? ? ? ? ??
它的傅里葉逆變換就是我們所需要的互相關函數:
? ? ? ? ? ? ? ? ? ? ? ? ?
所以只要根據傅里葉變換計算出 ,就可以得到 。那么它的傅里葉逆變換就是兩個信號的互相關函數。
3、python的numpy.correlate也提供的具體的計算函數,(很簡單,不需要涉及細節)。
具體實現:
現在把各種方法進行的過程,用圖像的方法展示一下,可以參考源代碼獲得更多的處理細節。
程序運行的結果如下:
[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? 時域法和頻域法實現的細節和結果?
對比用時域法和python提供的correlate計算結果完全一致,用頻域法會有和時域法計算結果有極其
微小的偏差。?
總結
以上是生活随笔為你收集整理的互相关函数python实现的三种方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 佳能打印机 android,佳能打印机手
- 下一篇: python十进制转化为二进制_pyth