2026a

# symerr


计算误差数和误码率

函数库: TyCommunication

# 语法

number, ratio, loc = symerr(x, y)
number, ratio, loc = symerr(x, y, flg)

# 说明

number, ratio, loc = symerr(x, y) 对 xy 中的元素进行比较。xy 的尺寸决定了比较的方式。 输出 number 是指示误差数的标量或向量。 输出 ratio 等于 number 除以尺寸较小的输入参数的元素总数。 同时返回一个二进制矩阵 loc,指示 xy 的哪些元素不同。如果相应的比较没有产生差异,则对应的 loc 元素为零,否则为 1。


number, ratio, loc = symerr(x, y, flg) 比较 xy 中的元素。输入参数 flg 以及 xy 的大小决定了 number 的大小。 示例

# 示例

矩阵元素比较

将矩阵元素与另一个矩阵进行比较

using TyCommunication
x = [1 1 3 1; 3 2 2 2; 3 3 8 3]
x = 3×4 Matrix{Int64}:
 1  1  3  1
 3  2  2  2
 3  3  8  3
aMatrix = [1 1 1 1; 2 2 2 2; 3 3 3 3]
aMatrix = 3×4 Matrix{Int64}:
 1  1  1  1
 2  2  2  2
 3  3  3  3
number1, ratio1 = symerr(x, aMatrix)
number1 = 3
ratio1 = 0.25

将矩阵元素与行向量进行比较

x = [1 1 3 1; 3 2 2 2; 3 3 8 3]
x = 3×4 Matrix{Int64}:
 1  1  3  1
 3  2  2  2
 3  3  8  3
aRowVector = [1, 2, 3, 1]'
aRowVector = 1×4 adjoint(::Vector{Int64}) with eltype Int64:
 1  2  3  1
number2, ratio2 = symerr(x, aRowVector)
number2 = 3×1 Matrix{Int64}:
 1
 3
 4

ratio2 = 3×1 Matrix{Float64}:
 0.25
 0.75
 1.0

矩阵元素与列向量的比较

x = [1 1 3 1; 3 2 2 2; 3 3 8 3]
x = 3×4 Matrix{Int64}:
 1  1  3  1
 3  2  2  2
 3  3  8  3
aColumnVector = [1; 2; 3]
aColumnVector = 3-element Vector{Int64}:
 1
 2
 3
number3, ratio3 = symerr(x, aColumnVector)
number3 = 1×4 Matrix{Int64}:
 1  0  2  0

ratio3 = 1×4 Matrix{Float64}:
 0.333333  0.0  0.666667  0.0
使用可选的比较方式来比较两个矩阵的元素

在本例中,使用一个 flag 变量来替代默认的逐行比较。请注意,numberratio 是标量。

using TyCommunication
number,ratio,loc=symerr([1 2; 3 4],[1 3],"overall")
number = 3

ratio = 0.75

loc = 2×2 Matrix{Bool}:
 0  1
 1  1

# 输入参数

x - 要比较的第一个输入
矩阵

要比较的第一个输入,指定为矩阵。

数据类型: Int64 | Float64

y - 要比较的第二个输入
矩阵

要比较的第二个输入,指定为矩阵。

数据类型: Int64 | Float64

flg - 元素比较方式
"overall" | "column-wise" | "row-wise"

可选参数,用于覆盖控制 symerr 比较的元素以及 symerr 如何计算输出的默认值。

  • "overall" –– xy 逐个元素比较。
  • "column-wise" –– x 的 第 m 行与 y 的第 m 行。
  • "row-wise" –– x 的第 m 列与 y 的第 m 列。

有关详细信息,请参见指定元素比较

# 输出参数

number - 误差的数量
标量 | 向量

xy 之间不同的元素数,以标量或向量的形式返回。数字的大小由可选的输入 flg 以及 xy 的尺寸决定。有关详细信息,请参见 默认元素比较指定元素比较

ratio - 误码率
标量

误差数、数量与较小输入的元素总数之比,以标量形式返回。

loc - 错误的位置
标量 | 向量 | 矩阵

xy 具有相同大小和维度的逻辑数组,在输入 xy 之间具有相应的误差位置。如果相应的比较没有产生差异,则 loc 元素为零,否则为 loc 元素。

# 详细信息

默认元素比较

symerr 函数将 x 中元素的二进制表示形式与 y 中元素的二进制表示形式进行比较。如果未指定可选参数 flg,symerr 将使用输入 xy 的形状来确定元素比较方法。下面的原理图说明了 xy 的形状如何确定 symerr 比较哪些元素:

  • 如果 xy 是相同维度的矩阵,则 symerr 逐个元素比较 xy。数字是一个标量。见图中的示意图(a);
  • 如果一个是行(分别是列)向量,另一个是二维矩阵,则 symerr 会逐个元素地比较向量元素与矩阵的每一行(或列)。向量的长度必须等于矩阵中的列数(或行数)。number 是一个列(或行)向量,其第 m 个条目指示在将向量与矩阵的第 m 行(或列)进行比较时不同的元素数。见图中的示意图(b)和(c)。
指定元素比较

使用 flg 覆盖控制 symerr 比较哪些元素以及 symerr 如何计算输出的默认值。flg 的值为"总体"、"列"和"行"。下表描述了各种输入组合所产生的差异。在所有情况下,比率是数字除以 y 中的元素总数。

将二维矩阵 x 与另一个输入 y 进行比较

y 的形状 flg 比较类型 number
二维矩阵 "overall" (默认) 逐个元素 符号错误总数
"column-wise" 第 m 列 x 与 y 的第 m 列 行向量,其条目计算每列中的符号错误
"column-wise" 第 m 行 x 与第 m 行 y 其条目对每行中的符号错误进行计数的列向量
列向量 "overall" y 与 x 的每一列 符号错误总数
"column-wise" (默认) y 与 x 的每一列 行向量,其条目计算 x 的每列中的符号错误
行向量 "overall" y 与 x 的每一行 符号错误总数
"column-wise"(默认) y 与 x 的每一行 其条目计算每行 x 中的符号错误的列向量

# 另请参阅

biterr