шаг

Системный объект: поэтапный. GCCEstimator
Пакет: поэтапный

Оцените направление прибытия с помощью обобщенной взаимной корреляции

Синтаксис

ang = step(sGCC,X)
[ang,tau] = step(sGCC,X)
[ang,R,lag] = step(sGCC,X)
[ang,tau,R,lag] = step(sGCC,X)

Описание

Примечание

При запуске в R2016b, вместо того, чтобы использовать метод step, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

ang = step(sGCC,X) возвращает направление прибытия, ang, входного сигнала X. Аргумент X является матрицей, задающей полученные сигналы в элементах массива, заданного в свойстве SensorArray. Сигналы распространяют из одного источника. Каждый столбец в X соответствует элементам в массиве (если массив используется), или количество подмассивов (если подмассив используется). Каждая строка X представляет один снимок состояния времени.

[ang,tau] = step(sGCC,X) возвращает задержки, tau, оцененный от корреляций между парами датчиков. Чтобы использовать этот синтаксис, установите свойство DelayOutputPort на true. Аргументом tau является P - вектор - строка элемента, где P является количеством пар датчика, и где P = N(N-1).

[ang,R,lag] = step(sGCC,X) возвращает предполагаемые корреляции, R, между парами датчиков, когда вы устанавливаете свойство CorrelationOutputPort на истину. R является матрицей со столбцами P, где P является количеством пар датчика. Каждый столбец в R содержит корреляцию для соответствующей пары датчиков. lag является вектор-столбцом, содержащим задержки, соответствующие строкам корреляционной матрицы. Задержки являются тем же самым для всех пар датчика.

пример

Можно объединить дополнительные входные параметры, когда их свойства включения установлены. Дополнительные входные параметры должны быть перечислены в том же порядке как свои свойства включения. Например,[ang,tau,R,lag] = step(sGCC,X) допустимо, когда вы устанавливаете и DelayOutputPort и CorrelationOutputPort к true.

Примечание

Объект выполняет инициализацию в первый раз, когда объект выполняется. Эта инициализация блокирует ненастраиваемые свойства (MATLAB) и входные спецификации, такие как размерности, сложность и тип данных входных данных. Если вы изменяете ненастраиваемое свойство или входную спецификацию, Системный объект выдает ошибку. Чтобы изменить ненастраиваемые свойства или входные параметры, необходимо сначала вызвать метод release, чтобы разблокировать объект.

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

развернуть все

Средство оценки GCC-PHAT, заданное как Системный объект phased.GCCEstimator.

Пример: phased.GCCEstimator

Полученный сигнал, заданный как M-by-N матрица с комплексным знаком. Количество M является количеством демонстрационных значений (снимки состояния) сигнала и N, является количеством элементов датчика в массиве. Для подмассивов N является количеством подмассивов.

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

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

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

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

развернуть все

Направление прибытия сигнала, возвращенного как 2 1 вектор-столбец с действительным знаком в форме [azimuth;elevation]. Если массив является универсальной линейной матрицей, ang является скаляром, представляющим поперечный угол. Угловые модули в градусах, заданы относительно системы локальной координаты массива.

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

  • Когда SensorPairSource установлен в 'Auto', P = N - 1. N является числом элементов в массиве.

  • Когда SensorPairSource установлен в 'Property', P является количеством пар датчика, заданных свойством SensorPair.

Единицы измерения времени являются секундами. Этот вывод включен, когда вы устанавливаете свойство DelayOutputPort на true.

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

  • Когда SensorPairSource установлен в 'Auto', P = N - 1. N является числом элементов в массиве. Столбцы в R содержат корреляции между первым датчиком и всеми другими датчиками.

  • Когда SensorPairSource установлен в 'Property', P является количеством пар датчика, заданных свойством SensorPair. Каждый столбец в R содержит корреляцию для соответствующей пары датчиков.

M является количеством выборок времени во входном сигнале. Этот вывод включен, когда вы устанавливаете свойство CorrelationOutputPort на true.

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

Примеры

развернуть все

Оцените направление прибытия сигнала с помощью GCC-PHAT. Массив получения является 5 5 элементами массив микрофона URA с элементами, расположенными с интервалами на расстоянии в 25 сантиметров. Выберите 10 пар элемента, чтобы вычислить угол падения. Примите, что скорость звука в воздухе составляет 340 метров/секунда. Прибывающий сигнал является последовательностью широкополосных звуков. Примите, что сигнал прибывает от 54 азимутов степеней и пяти повышений степеней. Оцените угол падения, и затем постройте функцию корреляции по сравнению с задержкой для пары элементов.

Загрузите сигнал и извлеките небольшую часть для вычисления.

load gong;
y1 = y(1:100);

Настройте массив получения.

N = 5;
d = 0.25;
sMic = phased.OmnidirectionalMicrophoneElement;
sURA = phased.URA([N,N],[d,d],'Element',sMic);

Моделируйте прибывающую плоскую волну с помощью Системы WidebandCollector object™.

c = 340.0;
arrivalAng = [54;5];
sWBC = phased.WidebandCollector('Sensor',sURA,...
    'PropagationSpeed',c,...
    'SampleRate',Fs,...
    'ModulatedInput',false);
signal = step(sWBC,y1,arrivalAng);

Оцените направление прибытия. Выберите 10 датчиков, чтобы коррелировать с первым элементом URA.

sensorpairs = [[2,4,6,8,10,12,14,16,18,20];ones(1,10)];
sGCC = phased.GCCEstimator('SensorArray',sURA,...
    'PropagationSpeed',c,'SampleRate',Fs,...
    'SensorPairSource','Property',...
    'SensorPair',sensorpairs,...
    'DelayOutputPort',true','CorrelationOutputPort',true);
[estimatedAng,taus,R,lags] = step(sGCC,signal);

Предполагаемый угол:

disp(estimatedAng)
   11.6720
    4.2189

Постройте корреляцию между датчиком 8 и датчиком 1. Эта пара соответствует четвертому столбцу корреляционной матрицы. Ориентировочная стоимость tau (в миллисекундах) для этой пары:

disp(1000*taus(4))
    0.0238
plot(1000*lags,real(R(:,4)))
xlabel('Time lags (msec)')
ylabel('Correlation')

Алгоритмы

развернуть все

Ссылки

[1] Чарльз Х. Кнапп и Картер, G.C., обобщенный метод корреляции для оценки задержки, транзакций IEEE на акустике, речи и обработке сигналов, Vol, ASSP-24, № 4. Август 1976.

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

Введенный в R2015b