gccphat

Обобщенная взаимная корреляция

Синтаксис

tau = gccphat(sig,refsig)
tau = gccphat(sig,refsig,fs)
[tau,R,lag] = gccphat(___)
[___] = gccphat(sig)
[___] = gccphat(sig,fs)

Описание

пример

tau = gccphat(sig,refsig) вычисляет задержку, tau, между сигналом, sig, и ссылочным сигналом, refsig. И sig и refsig могут иметь несколько каналов. Функция принимает, что и ссылочный сигнал сигнала прибывает из одного источника. Чтобы оценить задержку, gccphat находит местоположение пика взаимной корреляции между sig и refsig. Взаимная корреляция вычисляется с помощью обобщенной фазы взаимной корреляции, преобразовывают алгоритм (GCC-PHAT). Задержки являются множителями демонстрационного интервала, соответствующего частоте дискретизации по умолчанию одного герц.

пример

tau = gccphat(sig,refsig,fs), задает частоту дискретизации сигнала. Задержки являются множителями демонстрационного интервала, соответствующего частоте дискретизации. Все входные сигналы должны иметь ту же частоту дискретизации.

пример

[tau,R,lag] = gccphat(___) возвращает, кроме того, значения взаимной корреляции и задержки корреляции, с помощью любого из аргументов от предыдущих синтаксисов. Задержки являются множителями интервала выборки. Количество каналов взаимной корреляции равняется количеству каналов в sig.

пример

[___] = gccphat(sig) или [___] = gccphat(sig,fs) возвращает предполагаемые задержки и перекрестные корреляции между всеми парами каналов в sig. Если sig имеет столбцы M, получившийся tau и R имеют столбцы M2. В этих синтаксисах не используется никакой ссылочный вход сигнала. Первые столбцы M tau и R содержат задержки и перекрестные корреляции, которые используют первый канал в качестве ссылки. Вторые столбцы M содержат задержки и взаимные корреляции, которые используют второй канал в качестве ссылки и так далее.

Примеры

свернуть все

Загрузите сигнал звука гонга. Во-первых, используйте сигнал гонга в качестве ссылочного сигнала. Затем копируйте сигнал дважды, введя задержки 5 и 25 секунд. Оставьте уровень выборки его значению по умолчанию одного герц. Используйте gccphat, чтобы оценить задержки между задержанными сигналами и ссылочным сигналом.

load gong;
refsig = y;
delay1 = 5;
delay2 = 25;
sig1 = delayseq(refsig,delay1);
sig2 = delayseq(refsig,delay2);
tau_est = gccphat([sig1,sig2],refsig)
tau_est = 1×2

     5    25

Загрузите сигнал звука гонга. Используйте сигнал гонга в качестве ссылочного сигнала. Затем копируйте сигнал, введя задержки 5 миллисекунд. Используйте уровень выборки 8 192 Гц. Используйте gccphat, чтобы оценить задержку между задержанным сигналом и ссылочным сигналом.

load gong;
delay = 0.005;
refsig = y;
sig = delayseq(refsig,delay,Fs);
tau_est = gccphat(sig,refsig,Fs)
tau_est = 0.0050

Загрузка музыкальный звуковой сигнал с частотой дискретизации составляет 8 192 герц. Затем копируйте сигнал три раза и введите задержки между сигналами. Оцените задержки между задержанными сигналами и ссылочными сигналами. Постройте значения корреляции.

load handel;
dt = 1/Fs;
refsig = y;

Создайте три задержанных версии сигнала.

delay1 = -5.2*dt;
delay2 = 10.3*dt;
delay3 = 7*dt;
sig1 = delayseq(refsig,delay1,Fs);
sig2 = delayseq(refsig,delay2,Fs);
sig3 = delayseq(refsig,delay3,Fs);

Перекрестный коррелируйте задержанные сигналы со ссылочным сигналом.

[tau_est,R,lags] = gccphat([sig1,sig2,sig3],refsig,Fs);

Функции gccphat оценивают задержку с самым близким демонстрационным интервалом.

disp(tau_est*Fs)
    -5    10     7

Постройте функции корреляции.

plot(1000*lags,real(R(:,1)))
xlabel('Lag Times (ms)')
ylabel('Cross-correlation')
axis([-5,5,-.4,1.1])
hold on
plot(1000*lags,real(R(:,2)))
plot(1000*lags,real(R(:,3)))
hold off

Загрузка музыкальный звуковой сигнал с частотой дискретизации составляет 8 192 герц. Затем копируйте сигнал два раза и введите задержки между двумя сигналами и ссылочным сигналом. Оцените задержки и постройте функцию взаимной корреляции между всеми парами сигналов.

load handel;
dt = 1/Fs;
refsig = y;

Создайте три задержанных версии сигнала.

delay1 = -5.7*dt;
delay2 = 10.2*dt;
sig1 = delayseq(refsig,delay1,Fs);
sig2 = delayseq(refsig,delay2,Fs);

Перекрестный коррелируйте все сигналы с другим сигналом.

[tau_est,R,lags] = gccphat([refsig,sig1,sig2],Fs);

Покажите задержки модулей демонстрационного интервала. Алгоритм оценивает задержки, квантованные к самому близкому демонстрационному интервалу. Взаимная корреляция трех сигналов производит 9 возможных задержек, один для каждой возможной пары сигнала.

disp(tau_est*Fs)
     0    -6    10     6     0    16   -10   -16     0

Сигнал, коррелируемый с собой, дает нулевую задержку.

Постройте функции корреляции.

for n=1:9
    plot(1000*lags,real(R(:,n)))
    if n==1
        hold on
        xlabel('Lag Times (ms)')
        ylabel('Correlation')
        axis([-5,5,-.4,1.1])
    end
end
hold off

Входные параметры

свернуть все

Сигналы датчика, заданные как N-by-1 вектор-столбец или N-by-M матрица. N является количеством выборок времени, и M является количеством каналов. Если sig является матрицей, каждый столбец является различным каналом.

Пример: [0,1,2,3,2,1,0]

Типы данных: single | double
Поддержка комплексного числа: Да

Ссылочные сигналы, заданные как N-by-1 вектор-столбец с комплексным знаком или N-by-M матрица с комплексным знаком. Если refsig является вектор-столбцом, то все каналы в sig используют refsig в качестве ссылочного сигнала при вычислении взаимной корреляции.

Если refsig является матрицей, то размер refsig должен совпадать с размером sig. Функция gccphat вычисляет взаимную корреляцию между соответствующими каналами в sig и refsig. Сигналы могут прибыть из других источников.

Пример: [1,2,3,2,1,0,0]

Типы данных: single | double
Поддержка комплексного числа: Да

Частота дискретизации сигнала, заданная как положительный скаляр с действительным знаком. Все сигналы должны иметь ту же частоту дискретизации. Модули частоты дискретизации находятся в герц.

Пример: 8000

Типы данных: single | double
Поддержка комплексного числа: Да

Выходные аргументы

свернуть все

Задержка, возвращенная как 1 K вектором - строкой с действительным знаком. Значение K зависит от синтаксиса входного параметра.

  • Когда ссылочный сигнал, refsig, используется, значение K равняется размерности столбца sig, M. Каждая запись в tau задает предполагаемую задержку соответствующих пар сигнала в sig и refsig.

  • Когда никакой ссылочный сигнал не используется, значение K равняется квадрату размерности столбца sig, M2. Каждая запись в tau задает предполагаемую задержку соответствующих пар сигнала в sig.

Модули являются секундами.

Взаимная корреляция между сигналами в различных датчиках, возвращенных как (2N+1)-by-K матрица с комплексным знаком.

  • Когда ссылочный сигнал, refsig, используется, значение K равняется размерности столбца sig, M. Каждый столбец является взаимной корреляцией между соответствующими парами сигнала в sig и refsig.

  • Когда никакой ссылочный сигнал не используется, значение K равняется квадрату размерности столбца sig, M2. Каждый столбец является взаимной корреляцией между соответствующими парами сигнала в sig.

Время задержки корреляции, возвращенное как (2N+1) вектор-столбец с действительным знаком. Каждая строка lag содержит время задержки для соответствующей строки R. Отстаньте значения ограничиваются быть множителями интервала выборки. Отстаньте модули находятся в секундах.

Больше о

свернуть все

Обобщенная взаимная корреляция

Можно использовать обобщенную взаимную корреляцию, чтобы оценить разницу во времени прибытия сигнала в двух различных датчиках.

Моделью сигнала, испускаемого источником и полученного в двух датчиках, дают:

r1(t)=s(t)+n1(t)r2(t)=s(tD)+n2(t)

где D является разницей во времени прибытия (TDOA) или задержкой, сигнала в одном датчике относительно времени поступления во втором датчике. Можно оценить задержку путем нахождения задержки, которая максимизирует взаимную корреляцию между двумя сигналами.

От TDOA можно оценить поперечный угол падения плоской волны относительно строки, соединяющей эти два датчика. Для двух датчиков, разделенных расстоянием L, поперечный угол падения, Поперечные Углы, связан с задержкой

sinβ=cτL

где c является скоростью распространения в носителе.

Общепринятая методика оценки задержки должна вычислить взаимную корреляцию между сигналами, полученными в двух датчиках. Чтобы идентифицировать задержку, найдите пик во взаимной корреляции. Когда отношение сигнал-шум (SNR) является большим, пик корреляции, τ, соответствует фактическому D с временной задержкой.

R(τ)=E{r1(t)r2(t+τ)}D^ = аргументmax τR(τ)

Когда функция корреляции более резко достигнута максимума, производительность улучшается. Можно увеличить резкость пика взаимной корреляции использование функции взвешивания, которая белит входные сигналы. Этот метод называется generalized cross-correlation (GCC). Одна конкретная функция взвешивания нормирует спектральную плотность сигнала значением спектра, ведя к методу generalized cross-correlation phase transform (GCC-PHAT).

S(f)=R(τ)ei2πfτdτR˜(τ)=S(f)|S(f)|e+i2πfτdfD˜ = аргументmax τ R˜(τ)

Если вы используете всего две пары датчика, можно только оценить поперечный угол прибытия. Однако, если вы используете несколько пар неколлинеарных датчиков, например, в URA, можно оценить азимут прибытия и углы повышения плоской волны с помощью оценки наименьшего квадрата. Для датчиков N можно записать времени задержки τkj сигнала, прибывающего в датчик kth относительно датчика jth

cτkj=(xkxj)uu=потому чтоαsinθi^+sinαsinθj^+потому чтоθk^

где u является модульным вектором распространения плоской волны. Углы α и θ являются азимутом и углами повышения вектора распространения. Все углы и векторы заданы относительно локальных осей. Можно решить первое уравнение с помощью наименьших квадратов, чтобы привести к трем компонентам модульного вектора распространения. Затем можно решить второе уравнение для углов повышения и азимута.

Ссылки

[1] Кнапп, C. H. и Г.К. Картер, “Обобщенный метод корреляции для оценки задержки”. Транзакции IEEE на акустике, речи и обработке сигналов. Издание ASSP-24, № 4, август 1976.

[2] Г. К. Картер, “Когерентность и оценка с временной задержкой”. Продолжения IEEE. Издание 75, № 2, февраль 1987.

Расширенные возможности

Смотрите также

Введенный в R2015b