exponenta event banner

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 столбцы. В этих синтаксисах вход опорного сигнала не используется. Первые М столбцов tau и R содержат задержки и перекрестные корреляции, которые используют первый канал в качестве опорного. Вторые М столбцов содержат задержки и перекрестные корреляции, которые используют второй канал в качестве опорного, и так далее.

Примеры

свернуть все

Загрузите звуковой сигнал гонга. Сначала используйте сигнал гонга в качестве опорного сигнала. Затем дважды продублируйте сигнал, введя временные задержки в 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);

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.

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

свернуть все

Сигналы датчиков, определяемые как вектор столбца 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-by-K действительный вектор строки. Значение K зависит от синтаксиса входного аргумента.

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

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

Единицы - секунды.

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

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

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

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

Подробнее

свернуть все

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

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

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

r1 (t) = s (t) + n1 (t) r2 (t) = s (t − D) + n2 (t)

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

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

sinβ = ctheL

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

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

R (start) = E {r1 (t) r2 ( t  +

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

S (f) = ∞∞ R (τ) e−i2πfτdτR ~ (τ) = ∞∞ S (f) |S (f)   |e+i2πfτdfD ~ = argmaxτ R ˜ (τ)

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

cstartkj = (x→k−x→j) ⋅u→u→=cosαsinθi^+sinαsinθj^+cosθk^

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

Ссылки

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

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

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

.

См. также

Представлен в R2015b