我想为我的程序模拟错误突发,但我不确定如何去做。
假设我的固定误码率为2/10,错误突发长度从4到12位变化,并且无限比特流,我怎么能这样做,所以错误突发以随机的间隔发生具有4到12位的不同长度,同时仍然确保平均误码率收敛到2/10?
答案 0 :(得分:0)
假设您在选择错误位突发的长度时均匀采样集[4, 5, ..., 12]
。然后,错误突发的预期长度为(4+5+...+12)/9 = 8
。
注意:您可以根据需要对错误突发长度进行采样 - 我们下面实际使用的是错误突发长度的期望。
如果您希望整体误码率为2/10
,您只需执行以下操作:
error_lengths = [4, 5, 6, 7, 8, 9, 10, 11, 12]
loop forever
if rand() < 1/33 // with probability 1/33
n = rand(error_lengths) // pick a random error length
emit n contiguous error bits
else
emit 1 good bit
这样做的原因是,平均而言,每33次迭代,if
条件为true
1次,false
次为32次。每个true
平均创建8个错误位;每个false
创造了1个好位。
因此,错误比特率为(1*8)/(1*8 + 32*1) = 8/40 = 2/10
。
如果您想保证没有两个错误序列相邻,您可以改为:
error_lengths = [4, 5, 6, 7, 8, 9, 10, 11, 12]
loop forever
if rand() < 1/32 // with probability 1/32
n = rand(error_lengths) // pick a random error length
emit n contiguous error bits
emit 1 good bit
每次迭代的预期好位数= 1 每次迭代的预期错误位数= 8/32
错误率=(8/32)/(1 + 8/32)= 8/40 = 2/10
答案 1 :(得分:0)
您告诉我们一个范围,但没有指定错误突发长度的分布,也没有指定干净间隔长度。该范围内的所有值是否同样可能,4次出现的次数是否比12次更频繁,反之亦然,或者说是最常见的6次?
假设你有错误突发长度的分布 E 和干净区间长度的 C ,这意味着M_ e 和M_ < em> c ,分别。然后你需要做的是派生/构建 C 分布的参数化,以便M_ c = 4 M_ e 。要启动该过程,请选择概率为0.2的错误突发,而第一个时间间隔的概率为0.8的干净间隔。然后使用 E 和 C 分布在错误周期和清理周期之间交替生成持续时间。
例如,如果两种类型的区间都遵循均匀分布,则平均错误突发长度为8,您需要平均长度为32的干净区间。您可以使用U(31,33),U(1例如,63)或U(10,54) - 所有三个都有32的手段。