signal.correlate' same' /' full'含义?

时间:2017-05-02 11:04:51

标签: python numpy scipy correlation

我想知道signal.correlate(或numpy.correlate)中的模式参数是什么意思?

def crossCorrelator(sig1, sig2):
    correlate = signal.correlate(sig1,sig2,mode='same')
    return(correlate)
flux0 = [ 0.02006948  0.01358697 -0.06196026 -0.03842506 -0.09023056 -0.05464169 -0.02530553 -0.01937054 -0.01237411  0.03472263  0.17865012  0.27441767  0.23532932  0.16358341  0.08743969  0.12166425  0.10287468  0.13430794  0.08262321  0.0515434   0.04657624  0.09017276  0.09131331  0.04696824 -0.03901519 -0.01413654  0.05448175  0.1236946   0.09968044 -0.001584 -0.06094561 -0.02998289 -0.00113092  0.04336605  0.01105071  0.0527657  0.03825847  0.02309524]

flux1 = [-0.02946104 -0.02590192 -0.02274955  0.00485888 -0.0149776   0.01757462  0.02820086  0.0379213   0.03580811  0.06507382  0.09995243  0.12814133  0.16109725  0.12371425  0.08273643  0.09433014  0.05137761  0.04057405 -0.08171598 -0.06541216  0.00126869  0.09223577  0.06811737  0.0795967  0.08689563  0.0928949   0.09971169  0.05413958  0.05410236  0.00120439  0.02454734  0.06450544  0.01508899 -0.06100537 -0.10038889 -0.00651572  0.01095773  0.05517478]

correlation = crossCorrelator(flux0,flux1)

f, axarr = plt.subplots(2)
axarr[0].plot(np.arange(len(flux0)),flux0)
axarr[0].plot(np.arange(len(flux1)),flux1)
axarr[1].plot(np.arange(len(correlation)),correlation)
plt.show()

当我使用模式'相同'相关数组具有相同的尺寸,因为它具有双倍的通量。如果 len(flux0 / 1)具有维度时间, len(相关)的维度是什么?

我真的更喜欢数学解释,到目前为止我找到的答案更多是技术性的......

1 个答案:

答案 0 :(得分:1)

给定长度为A和B的两个序列(a [0],..,a [A-1])和(b [0],..,b [B-1]),卷积为按

计算

c [n] = sum_m a [m] * b [n-m]

如果mode=="full",则计算卷积从0到A + B-2的n,因此返回数组具有A + B-1个元素。

如果mode=="same"scipy.signal.correlate计算从(B-1)/ 2到A-1 +(B-1)/ 2范围内的n的卷积,其中假设为整数除法。返回数组有A个元素。仅当A> = B时,numpy.correlate的行为方式相同;如果A小于B,则切换两个数组(返回的数组有B个元素)。

如果mode=="valid",则计算n的范围从min(A,B)-1到max(A,B)-1,因此具有max(A,B)-min(A, B)+1元素。