AnyMath 文档

EngeePhased.CFARDetector

页面进行中。

一维信号的恒定虚警电平(PULT)的检测器。

库::`[医]工程师` 座:: CFAR 探测器

资料描述

系统对象*EngeePhased。CFARDetector*模拟一维信号具有恒定误报电平的检测器。

输入信号序列被分成间隔(称为信元)。 当输入数据中的像元值超过阈值时注册检测。 为了保持恒定的虚警率,阈值被设置为输入数据的噪声功率的倍数。

检测器使用三种小区平均方法或序数统计方法中的一种来评估来自被测小区周围的相邻小区的噪声功率。 小区平均方法:小区平均(CA)、最大小区值平均(GOCA)或最小小区值平均(SOCA)。

有关CFAR探测器的更多信息,请参阅[1]。

对于每个被测试的细胞,检测器:

  1. 基于围绕测试小区的训练频带中的小区值评估噪声统计。

  2. 通过将噪声估计值乘以阈值因子来计算阈值。

  3. 将被测小区的值与阈值进行比较,以确定目标的存在或不存在。 如果该值大于阈值,则目标存在。

要创建和使用带有池的检测器,请按照以下步骤操作:

  1. 创建*EngeePhased。CFARDetector*对象并设置其属性。

  2. 用参数调用对象,就好像它是一个函数一样。

若要了解有关如何使用系统对象的详细信息,请参阅 AnyMath系统对象.

语法

创造

  • 探测器=EngeePhased。CFARDetector() -使用具有默认属性值的池创建检测器对象。

  • 探测器=EngeePhased。CFARDetector(名称=值) -创建一个具有指定属性的池作为一对的检测器对象 名称=值,在哪里 姓名 -物业的名称,以及 价值 -适当的值。 您可以指定多个对 «名称-值» 对的顺序并不重要。 未指定的属性保留其默认值。

    detector=EngeePhased.CFARDetector(Method="OS", ThresholdFactor="Custom", Rank=2)

使用

  • Y=检测器(X,cutidx) -在输入数据*X*中为测试细胞*cutidx*执行检测。 输出参数*Y*包含被测试细胞的检测结果。

  • Y,th=检测器(_) -还返回应用于检测到的测试单元的检测阈值*th*。 若要使用此语法,请设置*ThresholdOutputPort*值 真的.

  • Y,噪声=检测器(_) -还返回参数*X*中每个检测到的测试单元的噪声功率*噪声*的估计值。 若要使用此语法,请设置*NoisePowerOutputPort*值 真的.

  • _=检测器(X,cutidx,thfac) -还使用阈值系数*thfac*来计算检测阈值。 若要使用此语法,请设置*ThresholdFactor*值 "输入端口".

争论

输入参数

X — 输入信号

+ 实向量是一列M乘1 | 实矩阵M乘N

Details

输入信号,指定为实矢量 上 或者一个真正的矩阵 上 .

数据类型

漂浮物32, 漂浮64</无翻译>

cutidx — 测试细胞的索引

+ 由正整数组成的长度为D的向量

Details

被测单元格的索引,指定为长度为正整数的向量 ,在哪里 -被测试的细胞数。

*如果参数*X*是一个向量,则参数*cutidx*指向一个元素。

*如果参数*X*是矩阵,则参数*xx*指向矩阵的一行。

相同的索引应用于矩阵的所有列。 对*cutidx*中指定的索引的每列*X*独立执行检测。

数据类型

漂浮物32, 漂浮64</无翻译>

thfac — 检测阈值系数

+ 正标量

Details

用于计算检测阈值的阈值系数,设为正标量。

依赖关系

要使用此输入参数,请将detector对象的属性*CustomThresholdFactor*设置为 "输入端口".

数据类型

漂浮物32, 漂浮64</无翻译>

输出参数

*Y*是 探测器输出

+ 逻辑矩阵D乘N | 逻辑矩阵为2乘L

Details

探测器输出数据的格式取决于*OutputFormat*: If for a propertyOutputFormat*值集 "切割结果",参数*Y*是一个向量 上 或矩阵 上 ,包含所述逻辑检测结果。 意义 是*cutidx*参数的长度,并且 -参数*X*的列数。 Y*参数的行对应于*cutidx*参数中的行。 对于参数的每一行,*Y*包含值 1 列中,如果在参数*X*的相应列中存在检测。 否则,*Y*参数包含值 0. *If for a propertyOutputFormat*值集 "检测指标",参数*Y*是一个向量 上 或矩阵 上 ,包含检测指标。 意义 是在输入数据中找到的检测次数。 如果自变量*X*是列向量,那么自变量*Y*包含自变量*X*中每个检测的索引。 如果自变量*X*是矩阵,那么自变量*Y*包含自变量*X*中每个检测的行和列索引。 Y*参数的每列都具有以下形式 [detrow;detcol]. 如果属性NumDetectionsSource*设置为 "财产", 等于*NumDetections*属性的值。 如果实际检测的数量小于此值,则非检测列将设置为 南.

输入矩阵的第一维的大小可以改变以模拟信号长度的变化。 例如在具有可变脉冲重复率的脉冲波形的情况下可以发生大小的变化。

数据类型

漂浮物32, 漂浮64</无翻译>

第 — 计算出的检测阈值

+ 实矩阵

Details

计算出的每个检测小区的检测阈值,作为实矩阵返回。 Th*端口上的数据具有与*Y*相同的维度。 *If for a propertyOutputFormat*值集 "切割结果",当参数*y*为时,参数*th*返回检测阈值 1,而 南 当参数*Y*等于 0. If for a propertyOutputFormat*值集 "检测指标",th*参数返回*Y*中每个相应检测的检测阈值。 如果属性NumDetectionsSource*设置为 "财产", 等于*NumDetections*属性的值。 如果实际检测的数量小于此值,则没有检测的列将设置为 南.

依赖关系

若要启用此输出参数,请设置*ThresholdOutputPort*值 真的.

数据类型

漂浮物32, 漂浮64</无翻译>

噪音 — 噪音功率评估

+ 实矩阵

Details

每个检测到的小区的噪声功率的估计,作为实矩阵返回。 噪声的尺寸与*Y*参数相同。 If for a propertyOutputFormat*value set "切割结果",noise*参数返回当*Y*参数为 1,而 南 当参数*Y*等于 0. *If for a propertyOutputFormat*值集 "检测指标",noise*参数返回*Y*中每个相应检测的噪声功率。 如果属性NumDetectionsSource*设置为 "财产", 等于*NumDetections*属性的值。 如果实际检测的数量小于此值,则没有检测的列将设置为 南.

依赖关系

若要启用此输出参数,请设置NoisePowerOutputPort值 真的.

数据类型

漂浮物32, 漂浮64</无翻译>

特征

# NumTrainingCells — 训练细胞数目
Integer

Details

训练中使用的训练小区的偶数整数个。 如果可能,训练小区在测试小区之前和之后被平分。

默认值 2 指示在测试小区的前面和后面都存在一个训练小区。

# Method — 池平均法
String

Details

池平均方法,由下列值之一指定: "CA" (默认情况下), "戈卡", "索卡" 或 "操作系统".

对于值 "CA", "戈卡", "索卡" 噪声功率是从训练带获得的样本的平均值。

为值 "操作系统" 噪声功率为 是作为训练细胞的所有值的数值排序的结果而获得的细胞值。 安装/安装 使用*Rank*。

平均方法 资料描述

"CA" -小区平均算法

计算测试细胞周围的所有训练细胞的样本平均值。

"戈卡" -在最大数量的细胞平均的算法

将测试单元周围的二维学习窗口分成左右两半。 然后,该算法计算每半样本的平均值,并选择最大的平均值。

"索卡" -在最小数量的单元格上平均的算法

将测试单元周围的二维学习窗口分成左右两半。 然后,该算法计算每半样本的平均值,并选择最小的平均值。

"操作系统" -订单统计算法

按照数值的升序对训练单元格进行排序。 然后算法从列表中选择第k个值。 k是由*Rank*属性指定的秩。

# NoisePowerOutputPort — 启用噪声输出功率估计
Logical

Details

接通噪声输出功率,设置为 错误 (默认情况下)或 真的.

若要获取噪声估计值,请将*NoisePowerOutputPort*属性设置为 真的 并在调用对象函数时使用输出参数*noise*。

# ProbabilityFalseAlarm — 所需的虚警概率
Real number

Details

虚警的所需概率,作为一个真正的正标量在范围内给出 0 以前 1.

算法从所需的虚警概率计算阈值系数。

默认值 — 0.001.

依赖关系

若要使用此属性,请设置*ThresholdFactor*值 "汽车".

# OutputFormat — 检测结果的格式
String

Details

返回的检测结果的格式,由以下值之一设置: "切割结果" (默认情况下)或 "检测指标".

如果*OutputFormat*属性设置为 "切割结果",结果为布尔检测值(1 或 0)对于每个测试的细胞。

如果*OutputFormat*属性设置为 "检测指标" 结果是包含超过检测阈值的被检查细胞的索引的向量或矩阵。

# ThresholdFactor — 阈值系数的确定方法
String

Details

阈值系数方法,由以下值之一设置: "汽车" (默认情况下), "习惯" 或 "输入端口":

  • "汽车" -对象根据属性*ProbabilityFalseAlarm*中指定的虚警的期望概率自动计算阈值系数。 在计算中,假设每个独立的输入信号是从具有二次定律的检测器出来的单个脉冲,没有脉冲积分。 该计算还假定噪声是白高斯。

  • "习惯" -阈值系数在*CustomThresholdFactor*属性中设置。

  • "输入端口" -输入参数*thfac*设置阈值系数。

# ThresholdOutputPort — 使能阈值检测值的输出
Logical

Details

启用检测阈值输出,设置为 错误 (默认情况下)或 真的.

要启用检测阈值输出,请将*ThresholdOutputPort*属性设置为 真的 并使用输出参数*th*。

# NumDetections — 最大检测索引数
Integer

Details

检测索引的最大数目,设置为正整数。

默认值 — 1.

依赖关系

若要使用此属性,请设置*OutputFormat*值 "检测指标",并为属性*NumDetectionsSource*值 "财产".

# Rank — 序数统计的排名
Integer

Details

序数统计量的秩,以正整数标量给出。

此属性的值必须小于或等于*NumTrainingCells*属性的值。 默认值 1 设置学习区域中的最低值。

依赖关系

若要使用此属性,请设置*Method*值 "操作系统".

# NumDetectionsSource — 检测次数的来源
String

Details

检测次数的来源,设置为以下值之一: "汽车" (默认情况下)或 "财产":

*如果*NumDetectionsSource*属性设置为 "汽车" 报告的检测索引的数量等于已检测的细胞的总数。

如果*NumDetectionsSource*属性设置为 "财产",报告的检测次数由NumDetections*属性的值决定。

依赖关系

若要使用此属性,请设置*[Property:OutputForma]t*值 "检测指标".

# CustomThresholdFactor — 用户阈值因子
Real number

Details

一个自定义阈值系数集作为一个真正的正标量.

默认值 — 1.

依赖关系

若要使用此属性,请将*属性设置为:ThresholdFactor*值 "习惯".

# NumGuardCells — 保护细胞数量
Integer

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

用PULT计算检测指标

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

一个对象 工程师。首席财务官 在三个步骤中使用单元平均:

  1. 从输入数据确定训练单元并生成噪声估计。 该表显示探测器如何根据属性*Method*的值生成噪声估计值。

    方法 噪音水平评估。

    "CA"

    使用所有训练单元格中值的平均值。

    "戈卡"

    选择左侧的训练像元和右侧的训练像元中的平均值中的较大者。

    "操作系统"

    按升序对训练单元格中的值进行排序,然后选择 -th元素,其中 -属性值*Rank*。

    "索卡"

    选择左侧和右侧测试单元格中平均值的较低值。

  2. 将噪声估计值乘以阈值因子得到阈值。

  3. 将待测小区内的值与阈值进行比较,判断有无目标。 如果该值大于阈值,则目标存在。

数据准确性

Details

该*EngeePhased。CFARDetector*对象支持输入数据、属性和参数的单精度和双精度。

如果参数*X*的输入数据具有单精度,则输出数据具有单精度。

如果参数*X*的输入数据具有双精度,则输出数据具有双精度。

输出数据的准确性不依赖于属性和其他参数的准确性。

文学作品

  1. 理查兹,M.A. _fundamentals的雷达信号处理。_纽约:麦格劳-希尔,2005年。