2026a

# algdeintrlv


使用代数导出的置换表恢复符号的顺序

函数库: TyCommunication

# 语法

deintrlvd = algdeintrlv(data, num, "Takeshita-Costello", k, h)
deintrlvd = algdeintrlv(data, num, "Welch-Costas", alph)

# 说明

deintrlvd = algdeintrlv(data, num, "Takeshita-Costello", k, h) 通过使用 Takeshita-Costello 方法代数导出的置换表来恢复数据中元素的原始顺序。如果 data 是向量,则 num 是 data 中的元素数;如果 data 是具有多列的矩阵,则 num 是数据的行数。在 Takeshita-Costello 方法中,num 必须是 2 的幂。乘法因子 k 必须是小于 num 的奇数,循环移位 h 必须是小于 num 的非负整数。如果数据是多行多列的矩阵,则该函数独立处理各列。


deintrlvd = algdeintrlv(data, num, "Welch-Costas", alph) 使用 Welch-Costas 方法。在 Welch-Costas 方法中,num+1 必须是素数。alph 是 1 到 num 之间的整数,表示有限域 GF(num+1) 的原始元素。 示例


要将此函数用作 algintrlv 函数的反函数,则要在两个函数中使用相同的输入(数据输入除外)。在这种情况下,这两个函数是相反的,即在 algintrlv 函数后应用 algdeintrlv 函数会使数据保持不变。

# 示例

使用代数导出的置换表对符号重新排序

使用代数导出的置换表对符号重新排序,然后恢复符号的顺序。比较恢复后的符号与信源的差异。

using TyCommunication
data3 = [8 2 5;0 0 0;3 2 1;7 7 1;1 4 7;0 2 4;7 7 4;4 1 8;9 7 8;6 1 8]
num3 = 10
alpha3 = 8
y3 = algintrlv(data3,num3,"Welch-Costas",alpha3)
x3 = algdeintrlv(y3,num3,"Welch-Costas",alpha3)
x3 == data3
ans = true
对符号进行交织和解交织操作

本例使用了 Takeshita-Costello 算法的 algintrlv 和 algdeintrlv 方法。

生成交错的随机数据符号。输入数据的行数 num 必须是 2 的幂次。

using TyCommunication
using TyMath

rng = mt19937ar(5489)
num = 16
ncols = 3
data = rand(rng, num, ncols)
data = 16×3 Matrix{Float64}:
 0.814724   0.421761   0.276923
 0.905792   0.915736   0.0461714
 0.126987   0.792207   0.0971318
 0.913376   0.959492   0.823458
 0.632359   0.655741   0.694829
 0.0975404  0.0357117  0.317099
 0.278498   0.849129   0.950222
 0.546882   0.933993   0.0344461
 0.957507   0.678735   0.438744
 0.964889   0.75774    0.381558
 0.157613   0.743132   0.765517
 0.970593   0.392227   0.7952
 0.957167   0.655478   0.186873
 0.485376   0.171187   0.489764
 0.80028    0.706046   0.445586
 0.141886   0.0318328  0.646313

使用 Takeshita-Costello 算法交错符号。将乘法因子 k 设为小于 num 的奇整数,将循环移位 h 设为小于 num 的非负整数。

k = 3
h = 4
intdata = algintrlv(data, num, "takeshita-costello", k, h)
intdata = 16×3 Matrix{Float64}:
 0.957167   0.655478   0.186873
 0.278498   0.849129   0.950222
 0.157613   0.743132   0.765517
 0.0975404  0.0357117  0.317099
 0.814724   0.421761   0.276923
 0.126987   0.792207   0.0971318
 0.905792   0.915736   0.0461714
 0.957507   0.678735   0.438744
 0.546882   0.933993   0.0344461
 0.141886   0.0318328  0.646313
 0.485376   0.171187   0.489764
 0.632359   0.655741   0.694829
 0.913376   0.959492   0.823458
 0.970593   0.392227   0.7952
 0.80028    0.706046   0.445586
 0.964889   0.75774    0.381558

解除符号间隙,获得原始顺序。

deintdata = algdeintrlv(intdata, num, "takeshita-costello", k, h)
deintdata = 16×3 Matrix{Float64}:
 0.814724   0.421761   0.276923
 0.905792   0.915736   0.0461714
 0.126987   0.792207   0.0971318
 0.913376   0.959492   0.823458
 0.632359   0.655741   0.694829
 0.0975404  0.0357117  0.317099
 0.278498   0.849129   0.950222
 0.546882   0.933993   0.0344461
 0.957507   0.678735   0.438744
 0.964889   0.75774    0.381558
 0.157613   0.743132   0.765517
 0.970593   0.392227   0.7952
 0.957167   0.655478   0.186873
 0.485376   0.171187   0.489764
 0.80028    0.706046   0.445586
 0.141886   0.0318328  0.646313

# 另请参阅

algintrlv