Engee 文档

相关性

两个输入数据相互关联的函数。

类型: Correlation

图书馆中的路径:

/Signal Operations/Statistics/Correlation

说明

相关性*程序块计算两个输入数组(维数为 N)沿第一维的相互相关函数。计算可以在时域或频域中进行。您可以使用*计算域*参数指定计算域。

在时域中,该单元将第一输入信号 与第二输入信号 的时间反向复共轭进行卷积。

在频域,为了计算相互相关性,模块

  1. 对两个输入信号 进行傅立叶变换。

  2. 相乘,其中 是复共轭。

  3. 计算乘积的反傅里叶变换。

如果将 * 计算域* 设置为 "最快",程序块将选择计算次数最少的域。

端口

输入

端口_1 - 第一个数据输入
矩阵

该块接受多通道和多维输入数据,输入值为实数或复数。将*计算域*设置为`时间`时,输入信号可以是定点信号。当一个或两个输入信号都是复数时,输出信号也是复数。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Fixed

*支持复数:是

端口 2 - 第二数据输入
矩阵

该块接受多通道和多维输入数据,输入值为实数或复数。如果将*计算域*设置为`时间`,输入信号可以是定点信号。当一个或两个输入信号都是复数时,输出信号也是复数。

数据类型: Float16, Float32, Float64, Int8, Int16, Int32, Int64, Int128, UInt8, UInt16, UInt32, UInt64, UInt128, Fixed

*支持复数:是

输出

端口_1 - 相互关联的输出信号
向量 | `矩阵

两个输入信号相互关联的输出。

当输入数据为多维数组时,程序块会输出一个多维数组,其中除第一维外的所有维数都与输入数组相同。例如

  • 当输入 的维数分别为 Mu by N by P 和 Mv by N by P 时,相关性 程序块输出数组 Mu+Mv-1 by N by P。

  • 当输入信号 的维数分别为 Mu 乘 N 和 Mv 乘 N 时,该块输出数组 Mu+Mv-1 乘 N。

当一个输入信号代表一个列向量,另一个输入信号代表一个多维数组时,相关性模块会计算向量与多维数组中每一列的相互相关性。例如

  • 当输入 表示列向量 Mu by 1, 表示矩阵 Mv by N 时,相关块输出矩阵 Mu+Mv-1 by N。

  • 同样,当 分别是长度为 Mu 和 Mv 的列向量时,程序块执行向量互相关。

数据类型: Float64

*支持复数:是

参数

主要参数

计算域 - 块计算自相关性的区域
时间(默认) | 频率 | 最快
  • 时间"- 在时域中计算相互相关性,从而最大限度地减少内存使用量。

  • 频率"- 在频域中计算相互关联。更多信息,请参阅 [Алгоритмы].

  • Fastest` - 以最少的计算次数计算相互关联。

要处理定点信号,请将此参数设置为 Time

数据类型

Rounding mode - 四舍五入模式
|Floor (default) |Ceiling |Convergent |Nearest |Round |Simplest |`Zero

选择定点运算的舍入模式。您可以选择

  • Floor` - 将正数和负数舍入到负无穷大。

  • 上限"- 将正数和负数舍入到正无穷大。

  • 收敛"- 将数字四舍五入到最接近的可表示值。如果数字的小数部分以 5 结尾,则四舍五入到最接近的偶数整数。

  • 最近"- 将数字舍入到最接近的可表示值。如果数字的小数部分以 5 结尾,则四舍五入为最接近的偶数整数。

  • Round` - 将数字舍入到最接近的可表示值。如果数字的小数部分以 5 结尾,正数四舍五入为正无穷大,负数四舍五入为负无穷大。

  • Simplest` - 自动在 "Floor "舍入和 "Zero "舍入之间进行选择,以生成尽可能高效的舍入代码。

  • Zero - 将数字舍入为零。

程序块参数总是四舍五入到最接近的可表示值。

如果满足条件,*四舍五入模式*和*整数溢出时使之饱和*设置不会影响数值结果:

  • *产品输出*设置为 "继承:通过内部规则继承"。

  • 累加器*参数设置为 "继承:通过内部规则继承"。

  • 输出*参数设置为 "继承:与累加器相同"。

通过这些数据类型设置,程序块以全精度模式运行。

整数溢出时饱和 - 整数溢出时饱和
已禁用(默认) | 已启用

选中该复选框时,将对整数和定点数使用饱和运算:发生溢出时,结果将自动替换为数据类型的最大可能(模)值。

操作 原理 对溢出的影响 示例

已选中(启用)Saturate on integer overflow 复选框。

您的模型可能存在溢出,您希望生成的代码明确防止溢出。

当发生溢出时,结果将自动替换为数据类型可能的最大值(模)。

Int8(有符号 8 位整数)数据类型可表示的最大值是 127。

块操作的任何结果如果超过这个最大值,都会导致 8 位整数溢出。检查时,块输出饱和到 127。同样,在最小输出值为 -128 时,程序块输出也会饱和。

整数溢出时饱和*复选框未选中(禁用)。

您希望优化生成代码的效率。

您希望避免过度确定程序块如何处理超出范围的信号。

溢出将以数据类型所能表示的适当值承载。

Int8(有符号的 8 位整数)数据类型可表示的最大值为 127。

块操作的任何结果如果超过这个最大值,都会导致 8 位整数溢出。如果未选中复选框,软件会将导致溢出的值解释为 Int8,这可能会导致意外结果。例如,以 Int8 表示的块 130(二进制代码 1000 0010)的结果为 -126。

选择该复选框后,饱和将应用于程序块中的所有内部操作,而不仅仅是输入/输出数据或结果。

计划使用

块参数

SaturateOnIntegerOverflow

价值观

|

默认值

产品输出* - 产品输出数据类型
Inherit: Same as input (default) | fixdt([],16,0)

Details

指定工作的输出数据类型。您可以将此参数设置为以下值:

  • 继承数据类型的规则,例如,Inherit: Same as input

  • 导致有效数据类型的表达式,例如,fixdt([],16,0)

Accumulator - 累加器数据类型
继承:通过内部规则继承(默认)` | 继承:与输入相同 | fixdt([],16,0)

*累加器*指定块中累加操作输出的数据类型。可以将此参数设置为以下值:

  • 继承:通过内部规则继承` - 程序块根据内部规则继承工作输出数据类型。

  • 继承:与输入相同"--程序块将累加器数据类型设置为与输入数据类型相同。

  • fixdt(1,16,0)`--该代码块指定了一种字长为 16 位、分数长度为 0 的自动有符号二进制缩放定点数据类型。

Output data type - 输出数据类型
Float16 | Float32 | Float64 | Int8 | Int16 | Int32 | Int64 | Int128 | UInt8 | UInt16 | UInt32 | UInt64 | UInt128 | Inherit: auto | Fixed point.

指定输出数据类型。

类型可以继承、直接指定或表示为数据类型对象。

软件用法

块参数:

OutDataTypeStr

*参考:

Float16| Float32| Float64| Int8| Int16| Int32| Int64| Int128| UInt8| UInt16| UInt32| UInt64| UInt128| Fixed

默认值:

Float64

Output minimum - 最小输出数据值
[] (默认) | scalar - 最小输出数据值

最小输出数据值默认为 [],相当于 -Inf

这个数字必须是有限的实数双标量值。

如果总线类型的对象被指定为该数据块的数据类型,则不要为该数据块中的数据指定最小值。Engee 会忽略这一设置。相反,应为指定为数据类型的对象元素设置最小值。

Engee 使用此值执行:

  • 建模范围检查。

  • 定点数据类型的自动缩放

  • 优化从模型生成的代码。这种优化会删除算法代码,并影响某些模拟模式的结果。

该参数不会对实际输出信号进行饱和或修整。取而代之的是使用块 饱和度

软件使用

块参数

OutMin

价值观

[ ] | 标量

默认值

[ ]

输出最大值* - 最大输出数据值
[] (默认) | scalar - 最大输出数据值

Details

最大输出数据值默认为 [],相当于 Inf

这个数字必须是有限有效的双标量值。

如果总线类型的对象被指定为该数据块的数据类型,则不要为该数据块中的数据指定最大值。Engee 会忽略这一设置。取而代之的是,为指定为数据类型的对象元素设置最大值。

Engee 使用此值执行:

  • 建模范围检查。

  • 定点数据类型的自动缩放

  • 优化从模型生成的代码。这种优化会删除算法代码,并影响某些模拟模式的结果。

该参数不会对实际输出信号进行饱和或修整。取而代之的是使用块 饱和度

软件使用

块参数

OutMax

价值观

[ ] | 标量

默认值

[ ]

锁定数据类型设置,防止定点工具更改 - 锁定数据类型的自动缩放功能
已禁用(默认) | 已启用

复选框,用于阻止定点数据类型的自动缩放。

软件使用

块参数

LockScale

价值观

|

默认值

更多信息

相互关联函数

相互相关函数是对两个离散时间序列相似性的一种度量,取决于其中一个序列相对于另一个序列的滞后时间。

对于长度为 N 的两个确定性输入数据或联合静止宽带随机过程(WSS)的实现, ,相互相关性通过以下关系计算:

其中

  • - 延迟

  • - 复共轭。

如果输入数据是共享静态随机过程的现实化, 是理论相互关联的非标准化估计值:

ρ ,

其中

  • - 数学期望的算子。

算法

时域计算

将计算区域设置为 "时间 "时,算法将计算两个信号在时域中的相互相关性。输入信号可以是时域中的定点信号。

两个二维阵列的相关性

当输入数据为两个二维数组时,输出数据 -th 列 包含这些元素:

在哪里?

  • - 复数共轭。

  • - N 上的输入矩阵 Mu

  • - N 上的输入矩阵 Mv

  • - N 上的输入矩阵 Mu+Mv-1

如果输入 的索引超出其有效范围,则其值为零。

列向量与二维数组的相关性

当一个输入信号表示列向量,另一个输入信号表示二维数组时,算法会独立地将输入向量与二维数组的每一列进行交叉相关。 输出数据的第 - 列 包含这些元素:

在哪里?

  • - 复共轭。

  • - 输入矩阵 Mu 乘 1。

  • - 输入矩阵 Mv,乘 N。

  • - 矩阵 Mu+Mv-1 乘 N。

如果输入 的索引超出其有效范围,则其值为零。

两个列向量的相关性

当输入数据是两个列向量时,输出数据 的第 1 列 包含这些元素:

在哪里?

  • - 复共轭。

  • - 输入矩阵 Mu 乘 1。

  • - 输入矩阵 Mv,乘 1。

  • - 矩阵 Mu+Mv-1 by 1.

如果输入 的索引超出其有效范围,则其值为零。

频域计算

为计算域设置 "频率 "值时,算法将计算频域内的相互关联。

要计算相互关联度,算法需要

  • 对两个输入信号 进行傅立叶变换。

  • 相乘,其中 是复数配对。

  • 计算乘积的反傅里叶变换。

在这方面,根据输入数据的长度,算法可能需要较少的计算量。