0


互相关函数python实现的三种方法

 本人前段时间在做地震波分析的时候用到互相关函数的计算,所以做了一些具体的研究和分析。用python实现信号的互相关可以有三种方法:一、直接用时域法。二、用频域法。三、python提供的numpy.correlate函数。现在把这三种方法都用于具体数据计算,并得到了几乎一致的结果。具体python源代码已经上传,可以在CSDN免费下载。

互相关函数pyhton实现的三种方法-Python文档类资源-CSDN下载

互相关函数计算的基本原理

1、对于信号 ,它们的互相关公式为:

                    ![](https://img-blog.csdnimg.cn/321aa70566724a4f83f5c1b16c436bd5.png)

在时域方法中,我们可以将上面的公式进行离散化,就可以做具体计算。

2、但时域法的计算量比较大,我可以用频域法做计算,它的原理如下:

如果 互相关函数的傅里叶变换:

                     ![](https://img-blog.csdnimg.cn/83ac41f9872349fba710ab89d3f3ba39.png)

根根据积分交换性质和卷积定理:

                    ![](https://img-blog.csdnimg.cn/368d89bffcde4d2c87cfaa581c681ae3.png)

它的傅里叶逆变换就是我们所需要的互相关函数:

                     ![](https://img-blog.csdnimg.cn/cc003a5b553749ceabad744cb0f55e12.png)

所以只要根据傅里叶变换计算出 ,就可以得到 。那么它的傅里叶逆变换就是两个信号的互相关函数。

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

本文转载自: https://blog.csdn.net/zhouhongyue1976/article/details/122607946
版权归原作者 周洪岳 所有, 如有侵权,请联系我们删除。

“互相关函数python实现的三种方法”的评论:

还没有评论