gccphat

Обобщенная перекрестная корреляция

Описание

пример

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 миллисекунд. Используйте частоту дискретизации 8192 Гц. Использование gccphat для оценки временной задержки между задержанным сигналом и опорным сигналом.

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

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

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);

The 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

Figure contains an axes. The axes contains 3 objects of type line.

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

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

Figure contains an axes. The axes contains 9 objects of type line.

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

свернуть все

Сигналы датчика, заданные как вектор-на-1 N или N-бай- 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, М2. Каждая запись в tau задает предполагаемую задержку для соответствующих пар сигналов в sig.

Модули - секунды.

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

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

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

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

Подробнее о

свернуть все

Обобщенная перекрестная корреляция

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

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

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

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

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

sinβ=cτL

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

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

R(τ)=E{r1(t)r2(t+τ)}D^ = argmaxτ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˜ = argmaxτ R˜(τ)

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

cτkj=(xkxj)uu=cosαsinθi^+sinαsinθj^+cosθk^

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

Ссылки

[1] Knapp, C. H. and G.C. Carter, «Обобщенный метод корреляции для оценки временной задержки». Транзакции IEEE по акустике, обработке речи и сигналов. Том ASSP-24, № 4, авг 1976.

[2] Г. К. Картер, «Оценка согласованности и задержки по времени». Материалы IEEE. Том 75, № 2, фев 1987.

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

.

См. также

Введенный в R2015b