EngeePhased.CFARDetector
|
Страница в процессе разработки. |
Детектор с постоянным уровнем ложной тревоги (ПУЛТ) для одномерных сигналов.
| Библиотека |
|
| Блок |
Описание
Системный объект EngeePhased.CFARDetector моделирует детектор с поддержанием постоянного уровня ложной тревоги (ПУЛТ) для одномерных сигналов.
Входная сигнальная последовательность разбивается на интервалы (называаемых ячейками). Обнаружение регистрируется тогда, когда значение ячейки во входных данных превышает пороговое значение. Чтобы поддерживать постоянную частоту ложных тревог, пороговое значение устанавливается кратным мощности шума входных данных.
Детектор оценивает мощность шума от соседних ячеек, окружающих тестируемую ячейку (cell-under-test, CUT), используя один из трех методов усреднения ячеек или метод порядковой статистики. Методы усреднения ячеек: усреднение ячеек (CA), усреднение наибольшего значения ячейки (GOCA) или усреднение наименьшего значения ячейки (SOCA).
Более подробную информацию о детекторах CFAR см. в [1].
Для каждой тестируемой ячейки детектор:
-
Оценивает статистику шума по значениям ячеек в полосе обучения, окружающей тестируемую ячейку.
-
Вычисляет пороговое значение, умножая оценку шума на пороговый коэффициент.
-
Сравнивает значение тестируемой ячейки с пороговым значением, чтобы определить наличие или отсутствие цели. Если значение больше порогового, то цель присутствует.
Чтобы создать и использовать детектор с ПУЛТ, выполните следующие действия:
-
Создайте объект EngeePhased.CFARDetector и установите его свойства.
-
Вызовите объект с аргументами, как если бы это была функция.
Чтобы узнать подробнее о том, как работать с системными объектами, см. Системные объекты Engee.
Синтаксис
Создание
-
detector = EngeePhased.CFARDetector()— создает объект детектора с ПУЛТ со значениями свойств по умолчанию. -
detector = EngeePhased.CFARDetector(Name=Value)— создает объект детектора с ПУЛТ с заданными свойствами в виде парыName=Value, гдеName— имя свойства, аValue— соответствующее значение. Можно указать несколько пар «имя-значение», порядок пар не имеет значения. Неуказанные свойства сохраняют свои значения по умолчанию.detector=EngeePhased.CFARDetector(Method="OS", ThresholdFactor="Custom", Rank=2)
Использование
-
Y = detector(X,cutidx)— выполняет обнаружение с ПУЛТ во входных данных X для тестируемых ячеек cutidx. Выходной аргумент Y содержит результаты обнаружения для тестируемых ячеек. -
Y,th = detector(___)— также возвращает порог обнаружения th, применяемый к обнаруженным тестируемым ячейкам. Чтобы использовать этот синтаксис, установите для свойства ThresholdOutputPort значениеtrue. -
Y,noise = detector(___)— также возвращает оценку мощности шума noise для каждой обнаруженной тестируемой ячейки в аргументе X. Чтобы использовать этот синтаксис, установите для свойства NoisePowerOutputPort значениеtrue. -
___ = detector(X,cutidx,thfac)— также использует пороговый коэффициент thfac для расчета порога обнаружения. Чтобы использовать этот синтаксис, установите для свойства ThresholdFactor значение"Input port".
Аргументы
Входные аргументы
X —
входной сигнал
вещественный вектор-столбец M на 1 | вещественная матрица M на N
Details
Входной сигнал, заданный как вещественный вектор на или вещественная матрица на .
| Типы данных |
|
cutidx —
индексы тестируемых ячеек
вектор длиной D из целых положительных чисел
Details
Индексы тестируемых ячеек, заданные как вектор целых положительных чисел длиной , где — количество тестируемых ячеек.
-
Если аргумент X — вектор, аргумент cutidx указывает на элемент.
-
Если аргумент X — матрица, аргумент cutidx указывает на строку матрицы.
Одинаковый индекс применяется ко всем столбцам матрицы. Обнаружение выполняется независимо по каждому столбцу X для индексов, указанных в cutidx.
| Типы данных |
|
thfac —
коэффициент порога обнаружения
положительный скаляр
Details
Пороговый коэффициент, используемый для расчета порога обнаружения, заданный как положительный скаляр.
Зависимости
Чтобы использовать этот входной аргумент, установите для свойства CustomThresholdFactor объекта детектора значение "Input port".
| Типы данных |
|
Выходные аргументы
Y —
выходной сигнал детектора
логическая матрица D на N | логическая матрица 2 на L
Details
Формат данных на выходе детектора зависит от свойства OutputFormat:
-
Если для свойства OutputFormat установлено значение
"Cut result", аргумент Y представляет собой вектор на или матрицу на , содержащую логические результаты обнаружения. Значение — это длина аргумента cutidx, а — количество столбцов аргумента X. Строки аргумента Y соответствуют строкам в аргументе cutidx. Для каждой строки аргумента Y содержит значение1в столбце, если в соответствующем столбце аргумента X есть обнаружение. В противном случае аргумент Y содержит значения0. -
Если для свойства OutputFormat установлено значение
"Detection index", аргумент Y — это вектор на или матрица на , содержащая индексы обнаружений. Значение — это количество обнаружений, найденных во входных данных. Если аргумент X — вектор-столбец, то аргумент Y содержит индекс каждого обнаружения в аргументе X. Если аргумент X — матрица, то аргумент Y содержит индексы строк и столбцов каждого обнаружения в аргументе X. Каждый столбец аргумента Y имеет вид[detrow;detcol]. Если для свойства NumDetectionsSource установлено значение"Property", равно значению свойства NumDetections. Если количество фактических обнаружений меньше этого значения, то в столбцах без обнаружений устанавливаются значенияNaN.
Размер первого измерения входной матрицы может меняться для имитации изменения длины сигнала. Изменение размера может происходить, например, в случае импульсной формы сигнала с переменной частотой повторения импульсов.
| Типы данных |
|
th —
вычисленный порог обнаружения
вещественная матрица
Details
Вычисленный порог обнаружения для каждой обнаруженной ячейки, возвращаемый как вещественная матрица. Данные на порту th имеют ту же размерность, что и Y.
-
Если для свойства OutputFormat установлено значение
"CUT result", аргумент th возвращает порог обнаружения, когда аргумент Y равен1, иNaN, когда аргумент Y равен0. -
Если для свойства OutputFormat установлено значение
"Detection index", аргумент th возвращает порог обнаружения для каждого соответствующего обнаружения в Y. Если при этом для свойства NumDetectionsSource установлено значение"Property", равно значению свойства NumDetections. Если количество фактических обнаружений меньше этого значения, столбцы без обнаружений устанавливаются в значенияNaN.
Зависимости
Чтобы включить этот выходной аргумент, установите для свойства ThresholdOutputPort значение true.
| Типы данных |
|
noise —
оценка мощности шума
вещественная матрица
Details
Оценка мощности шума для каждой обнаруженной ячейки, возвращаемая как вещественная матрица. Шум имеет те же размеры, что и аргумент Y.
-
Если для свойства OutputFormat установлено значение
"CUT result", аргумент noise возвращает мощность шума, когда аргумент Y равен1, иNaN, когда аргумент Y равен0. -
Если для свойства OutputFormat установлено значение
"Detection index", аргумент noise возвращает мощность шума для каждого соответствующего обнаружения в Y. Если при этом для свойства NumDetectionsSource установлено значение"Property", равно значению свойства NumDetections. Если количество фактических обнаружений меньше этого значения, столбцы без обнаружений устанавливаются в значенияNaN.
Зависимости
Чтобы включить этот выходной аргумент, установите для свойства NoisePowerOutputPort значение true.
| Типы данных |
|
Свойства
#
NumTrainingCells —
количество обучающих ячеек
Целое число
Details
Четное целое число обучающих ячеек, используемых при обучении. По возможности обучающие ячейки делятся поровну до и после тестируемой ячейки.
Значение по умолчанию 2 указывает на наличие одной обучающей ячейки как спереди, так и сзади тестируемой ячейки.
#
Method —
метод усреднения ПУЛТ
Строка
Details
Метод усреднения ПУЛТ, заданный одним из следующих значений: "CA" (по умолчанию), "GOCA", "SOCA" или "OS".
Для значений "CA", "GOCA", "SOCA" мощность шума — это среднее значение отсчетов, полученных из обучающей полосы.
Для значения "OS" мощность шума — это -е значение ячейки, полученное в результате численного упорядочивания всех значений обучающих ячеек. Установите с помощью свойства Rank.
| Метод усреднения | Описание |
|---|---|
|
Вычисляет выборочное среднее значение всех обучающих ячеек, окружающих тестовую ячейку. |
|
Разделяет двумерное окно обучения, окружающее тестовую ячейку, на левую и правую половины. Затем алгоритм вычисляет среднее значение отсчетов для каждой половины и выбирает наибольшее среднее. |
|
Разделяет двумерное окно обучения, окружающее тестовую ячейку, на левую и правую половины. Затем алгоритм вычисляет среднее значение отсчетов для каждой половины и выбирает наименьшее среднее. |
|
Сортирует обучающие ячейки в порядке возрастания числовых значений. Затем алгоритм выбирает k-е значение из списка. k — это ранг, заданный свойством Rank. |
#
NoisePowerOutputPort —
включение оценки выходной мощности шума
Логический тип
Details
Включение выходной мощности шума, заданное как false (по умолчанию) или true.
Чтобы получить оценку шума, установите для свойства NoisePowerOutputPort значение true и используйте выходной аргумент noise при вызове функции объекта.
#
ProbabilityFalseAlarm —
требуемая вероятность ложной тревоги
Вещественное число
Details
Требуемая вероятность ложной тревоги, заданная как вещественный положительный скаляр в диапазоне от 0 до 1.
Алгоритм вычисляет пороговый коэффициент из требуемой вероятности ложной тревоги.
Значение по умолчанию — 0.001.
Зависимости
Чтобы использовать это свойство, установите для свойства ThresholdFactor значение "Auto".
#
OutputFormat —
формат результатов обнаружения
Строка
Details
Формат возвращаемых результатов обнаружения, заданный одним из следующих значений: "CUT result" (по умолчанию) или "Detection index".
Если для свойства OutputFormat установлено значение "CUT result", результаты представляют собой логические значения обнаружения (1 или 0) для каждой протестированной ячейки.
Если для свойства OutputFormat установлено значение "Detection index", результаты представляют собой вектор или матрицу, содержащую индексы проверенных ячеек, превысивших порог обнаружения.
#
ThresholdFactor —
метод определения порогового коэффициента
Строка
Details
Метод порогового коэффициента, заданный одним из следующих значений: "Auto" (по умолчанию), "Custom" или "Input port":
-
"Auto"— объект автоматически вычисляет пороговый коэффициент, основываясь на желаемой вероятности ложной тревоги, указанной в свойстве ProbabilityFalseAlarm. При расчете предполагается, что каждый независимый сигнал на входе — это одиночный импульс, выходящий из детектора с квадратичным законом без интегрирования импульсов. При расчете также предполагается, что шум является белым гауссовским. -
"Custom"— пороговый коэффициент задается в свойстве CustomThresholdFactor. -
"Input port"— входной аргумент thfac задает пороговый коэффициент.
#
ThresholdOutputPort —
включение вывода значения порогового обнаружения
Логический тип
Details
Включение вывода порога обнаружения, заданное как false (по умолчанию) или true.
Чтобы включить вывод порога обнаружения, установите для свойства ThresholdOutputPort значение true и используйте выходной аргумент th.
#
NumDetections —
максимальное количество индексов обнаружения
Целое число
Details
Максимальное количество индексов обнаружения, заданное как целое положительное число.
Значение по умолчанию — 1.
Зависимости
Чтобы использовать это свойство, установите для свойства OutputFormat значение "Detection index", а для свойства NumDetectionsSource значение "Property".
#
Rank —
ранг порядковой статистики
Целое число
Details
Ранг порядковой статистики, заданный как целый положительный скаляр.
Значение этого свойства должно быть меньше или равно значению свойства NumTrainingCells. Значение по умолчанию 1 задает наименьшее значение в области обучения.
Зависимости
Чтобы использовать это свойство, установите для свойства Method значение "OS".
#
NumDetectionsSource —
источник количества обнаружений
Строка
Details
Источник количества обнаружений, заданный одним из следующих значений: "Auto" (по умолчанию) или "Property":
-
Если для свойства NumDetectionsSource установлено значение
"Auto", количество сообщаемых индексов обнаружения равно общему количеству тестируемых ячеек, в которых есть обнаружения. -
Если для свойства NumDetectionsSource установлено значение
"Property", количество сообщаемых обнаружений определяется значением свойства NumDetections.
Зависимости
Чтобы использовать это свойство, установите для свойства [Property:OutputForma]t значение "Detection index".
#
CustomThresholdFactor —
пользовательский пороговый коэффициент
Вещественное число
Details
Пользовательский пороговый коэффициент, заданный как вещественный положительный скаляр.
Значение по умолчанию — 1.
Зависимости
Чтобы использовать это свойство, установите для свойства Property:ThresholdFactor значение "Custom".
#
NumGuardCells —
количество защитных ячеек
Целое число
Details
Укажите четное целое число защитных ячеек, используемых в обучении. Это свойство определяет общее количество ячеек по обе стороны от тестируемой ячейки.
Значение по умолчанию 2 указывает на наличие одной защитной ячейки слева и справа от тестируемой ячейки.
Примеры
Вычисление вероятности ложной тревоги с использованием детектора с ПУЛТ
Details
Выполним усредненное по ячейкам обнаружение с ПУЛТ на заданном векторе гауссова шума с желаемой вероятностью ложной тревоги 0.1. Предположим, что данные поступают от детектора квадратичного закона и не выполняется интегрирование импульсов. Используем 50 ячеек для оценки уровня шума и 1 ячейку для разделения тестовой и обучающей ячеек. Выполним обнаружение на всех ячейках входных данных.
using EngeePhased
using Random
Random.seed!(1234)
detector = EngeePhased.CFARDetector(NumTrainingCells=50,NumGuardCells=2,ProbabilityFalseAlarm=0.1);
N = 1000
x = 1/sqrt(2) * (randn(N, 1) + 1im * randn(N, 1))
dets = detector(abs(x).^2,1:N)
pfa = sum(dets)/N
0.091
Вычисление индексов обнаружения с ПУЛТ
Details
Выполним усредненное по ячейкам обнаружение с ПУЛТ на заданном векторе гауссова шума с желаемой вероятностью ложной тревоги 0.005. Предположим, что данные поступают от детектора квадратичного закона и не выполняется интегрирование импульсов. Выполним обнаружение на всех ячейках входных данных. Используем 50 ячеек для оценки уровня шума и 1 ячейку для разделения тестовой и обучающей ячеек. Отобразим индексы обнаружения.
using EngeePhased
using Random
Random.seed!(1234)
detector = EngeePhased.CFARDetector(NumTrainingCells=50,NumGuardCells=2,ProbabilityFalseAlarm=0.005,OutputFormat="Detection index")
N = 1000
x1 = 1/sqrt(2) * (randn(N, 1) + im * randn(N, 1))
x2 = 1/sqrt(2) * (randn(N, 1) + im * randn(N, 1))
x = [x1 x2]
cutidx = 1:N
dets = detector(abs(x).^2,cutidx)
2×2000 Matrix{Float64}:
167.0 18.0 251.0 370.0 835.0 NaN … NaN NaN NaN NaN NaN NaN NaN
1.0 2.0 2.0 2.0 2.0 NaN NaN NaN NaN NaN NaN NaN NaN
Дополнительно
Обнаружение с ПУЛТ
Details
Объект EngeePhased.CFARDetector использует усреднение ячеек в три этапа:
-
Определяет обучающие ячейки из входных данных и формирует оценку шума. В таблице показано, как детектор формирует оценку шума в зависимости от значения свойства Method.
Метод Оценка уровня шума. "CA"Использует среднее значение значений во всех обучающих ячейках.
"GOCA"Выбирает большее из средних значений в обучающих ячейках слева и обучающих ячейках справа.
"OS"Сортирует значения в обучающих ячейках в порядке возрастания, затем выбирает -й элемент, где — значение свойства Rank.
"SOCA"Выбирает меньшее из средних значений в тестируемых ячейках слева и справа.
-
Умножает оценку шума на пороговый коэффициент, чтобы получить пороговое значение.
-
Сравнивает значение в тестируемой ячейке с пороговым значением, чтобы определить наличие или отсутствие цели. Если значение больше порога, то цель присутствует.
Точность данных
Details
Объект EngeePhased.CFARDetector поддерживает одинарную и двойную точность для входных данных, свойств и аргументов.
Если входные данные аргумента X имеют одинарную точность, то выходные данные имеют одинарную точность.
Если входные данные аргумента X имеют двойную точность, то выходные данные имеют двойную точность.
Точность выходных данных не зависит от точности свойств и других аргументов.