音频波形匹配

问题描述:

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

你可能想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