我想知道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(相关)的维度是什么?
我真的更喜欢数学解释,到目前为止我找到的答案更多是技术性的......
答案 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元素。