2026a

# comm_Descrambler


解扰输入信号

函数库: TyCommunication

# 构造

desc = comm_Descrambler()
desc = comm_Descrambler(; Name = Value)

# 语法

out = step(desc, signal)
out = step(desc, signal, initcond)

# 说明

comm_Descrambler 用于解扰输入信号。解扰输入信号的方法如下:

  1. 创建结构体 comm_Descrambler 并设置其属性;

  2. 使用主函数 step,把结构体作为第一个参数,输入信号作为其他参数。 示例

# 示例

解扰输入信号
生成随机信源,先用 comm_Scrambler 将其扰乱,再用 comm_Descrambler 将其解扰,然后对比误差。
using TyCommunication
using TyMath
rng = MT19937ar(1234)
N = 8
Poly = [1 0 1 1 0 1 0 1]
InitialConditions = [0 3 2 2 5 1 7]
input = rand(rng,0:N-1,5)
input = 5-element Vector{Int64}:
 1
 4
 3
 6
 6
scr = comm_Scrambler(N,Poly,"Property",InitialConditions,false)
scred = step(scr,input)
scred = 5-element Vector{Int64}:
 2
 2
 4
 7
 6
descr = comm_Descrambler(N,Poly,"Property",InitialConditions,false)
descred = step(descr,scred)
descred = 5-element Vector{Int64}:
 1
 4
 3
 6
 6
input == descred
ans = true
在初始条件变化的情况下对数据进行加扰和解扰
在函数调用之间更改初始条件时,对四元数据进行加扰和解扰。

创建计算基数为 4 的加扰器和解扰器系统对象。将 InitialConditionsSource 属性设置为 "Input port",这样就可以将初始条件设置为对象的参数。

using TyCommunication
using TyMath

rng = MT19937ar(5489)
N = 4
scrambler = comm_Scrambler(;
    CalculationBase=N, Polynomial=[1 0 0 1], InitialConditionsSource="Input port"
)
descrambler = comm_Descrambler(;
    CalculationBase=N, Polynomial=[1 0 0 1], InitialConditionsSource="Input port"
)

为错误向量预先分配内存,用于存储 symerr 函数输出的错误。

errVec = zeros(10, 1)

每次执行循环时,都对随机整数进行加扰和解扰,同时更改初始条件 initCond。使用 symerr 函数确定加扰和解扰操作是否会导致符号错误。

for k in 1:10
    initCond = randperm(rng, 3)'
    data = randi(rng, [0 N - 1], 5, 1)
    scrData = step(scrambler, data, initCond)
    deScrData = step(descrambler, scrData, initCond)
    errVec[k], = symerr(data, deScrData)
    global errVec
end

检查 errVec 以验证解扰器的输出是否与原始数据一致。

errVec
errVec = 10×1 Matrix{Float64}:
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0
 0.0

# 属性

CalculationBase - 输入数据的范围
4(默认)| 非负整数

在解扰器中用于模运算的输入数据范围,指定为非负整数。该对象的输入和输出为从 0 到 CalculationBase–1 的整数。

数据类型: Int64

Polynomial - 线性反馈移位寄存器的连接
[1 1 1 0 1](默认)| 二进制向量

在解扰器中用于线性反馈移位寄存器的连接,指定为二进制向量。Polynomial 属性定义解扰器中的每个开关是打开还是关闭。

示例: [1 0 0 0 0 0 1 0 1] 表示多项式 p()=1++

数据类型: Int64

InitialConditionsSource - 初始条件源
"Property"(默认) | "Input port"
  • "Property":使用 InitialConditions 属性指定加扰器初始条件;

  • "Input port":在调用对象时,通过使用额外的输入参数 initcond 来指定加扰器初始条件。

数据类型: String

InitialConditions - 解扰器寄存器的初始条件
[0 1 2 3](默认)| 非负整数向量

仿真开始时解扰器寄存器的初始条件,指定为非负整数向量。InitialConditions的长度必须等于 Polynomial 属性的阶数。向量元素值必须是从 0 到 CalculationBase–1 的整数。

依赖关系:InitialConditionsSource设置为 "Property" 时,此属性可用。

数据类型: Int64

# 输入参数

signal - 输入信号
向量

输入信号,指定为向量。

数据类型: Int64

initcond - 寄存器初值
非负整数向量

模拟开始时的初始解扰器寄存器条件,指定为非负整数向量。initcond 的长度必须等于 Polynomial 属性的阶数。向量元素值必须是从 0 到 CalculationBase–1 的整数。

数据类型: Int64

# 输出参数

out - 解扰输出
向量

解扰后的输出,以向量形式返回,其数据类型和长度与 signal 相同。

数据类型: Int64

# 另请参阅

comm_Scrambler | comm_PNSequence