2017-01-12 17 views
0

enter image description hereАудио сигнал согласования

enter image description here

Я соответствие два сигнала 400 мс. Я использую коррелят для проверки сдвига.

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 мс между ними. Я могу сдвинуть 0.015 мс, но фактическое совпадение начинается с 0.26 мс – 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

Я попробовал режим = полный. У меня нет проблем с выбором пика корреляции, и он отстает между двумя сигналами. Как найти заполнение длины последовательности? Как удалить нежелательный сигнал в начале? – deep

+0

Похоже, что 'mode = 'same'' обертывает входные последовательности, причем этот режим зависит от вашей проблемы, экспериментальной установки и ожидаемых свойств сигнала. Опять же, в зависимости от всего, множественные пики в корреляции могут иметь значение или нет. Пробовать примеры, такие как мой сюжет, могут помочь понять разные режимы, их соглашения о смещении, если не очевидны из чтения документа. – f5r5e5d