2017-01-12 238 views
0

enter image description here音頻波形匹配

enter image description here

我匹配的400毫秒2個波形。我正在使用關聯來檢查班次。

cc = correlate(b1,b2,mode="same") 
n=len(cc) 
cc=2*cc/n 
dur=n*dt1/2; 
d=linspace(-dur, dur, n) 
idx = argmax(cc) 

我正在2波形之間切換。但如何獲得兩個波形的實際匹配位置?

+0

您得到的轉變是您需要移動b1以使其與b2達到最大共生關係的轉變。 –

+0

我附上了圖像。兩者之間的平移是0.015 ms。我可以移動0.015 ms,但實際匹配從0.26 ms開始 – deep

回答

0

你可能想mode = "full"和需要做一些更多的數學挑選相關峯和調整序列長度填充

希望這個例子將有助於顯示的問題:

import math 
import numpy as np 
import matplotlib.pyplot as plt 

a = [math.sin(i* math.pi/10) for i in range(300)] 
b = [math.cos(i*math.pi/10) for i in range(300)] 
plt.plot(a, 'red') 
plt.plot(b, 'green') 

axb= np.correlate(a,b, mode="full")/100.0 
x = range(len(axb)) 
plt.plot(x, axb) 

enter image description here

+0

我試過mode = full。我沒有選擇相關峯值並且在兩個信號之間滯後的問題。如何找到序列長度填充?如何在一開始刪除不需要的信號? – deep

+0

它看起來像'mode ='same''包裝輸入序列,使用哪種模式取決於您的問題,實驗設置,預期的信號屬性。再次取決於一切,相關性中的多個峯值可能具有顯着性或不顯着性。嘗試像我的情節一樣的例子可能有助於理解不同的模式,它們的偏移約定,如果從閱讀文檔中不明顯。 – f5r5e5d