python correlate_python – 我如何使用numpy.correlate做自相关?

为了回答你的第一个问题,numpy.correlate(a,v,mode)执行卷积a与v的逆,并给出由指定的模式剪切的结果。 (7000,C(t)=Σ-∞< i< ∞aivt i其中-∞< t < ∞,允许从-∞到∞的结果,但是你显然不能存储一个无限长的数组。所以它必须被剪辑,这就是模式进来的地方。有3种不同的模式:full,same,&有效:

>“full”模式返回每个t的结果,其中a和v都有一些重叠。

>“same”模式返回与最短向量(a或v)长度相同的结果。

>“valid”模式仅在a和v完全相互重叠时返回结果。

documentation for numpy.convolve提供了有关模式的更多详细信息。

对于你的第二个问题,我认为numpy.correlate是给你自相关,它只是给你一点点。自相关用于找出信号或函数在某个时间差处与其自身的相似程度。在时间差为0时,自相关应该是最高的,因为信号与自身相同,因此您预期自相关结果数组中的第一个元素将是最大的。然而,相关性不是在时间差0处开始。它从负时间差开始,接近0,然后变为正。也就是说,你期待:

自相关(a)=Σ-∞< i< ∞aivt i其中0≤t< ∞ 但你得到的是: 自相关(a)=Σ-∞< i< ∞aivt i其中-∞< t < ∞ 你需要做的是获取相关结果的后半部分,这应该是你正在寻找的自相关。一个简单的python函数可以做到:

def autocorr(x):

result = numpy.correlate(x, x, mode='full')

return result[result.size/2:]

当然,你需要进行错误检查,以确保x实际上是一个1-d数组。此外,这种解释可能不是最数学上严格的。我一直在绕过无穷大,因为卷积的定义使用它们,但这不一定适用于自相关。因此,这种解释的理论部分可能稍微不合理,但希望实际结果是有帮助的。 These pages对自相关是非常有用的,如果你不介意通过符号和沉重的概念,可以给你一个更好的理论背景。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值