# comm_Descrambler
解扰输入信号
函数库: TyCommunication
# 构造
desc = comm_Descrambler()
desc = comm_Descrambler(; Name = Value)
# 语法
out = step(desc, signal)
out = step(desc, signal, initcond)
# 说明
comm_Descrambler 用于解扰输入信号。解扰输入信号的方法如下:
创建结构体 comm_Descrambler 并设置其属性;
使用主函数 step,把结构体作为第一个参数,输入信号作为其他参数。 示例
# 示例
解扰输入信号
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(
数据类型: 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