模拟突发错误的算法

时间:2013-07-26 15:42:20

标签: algorithm math simulation

我想为我的程序模拟错误突发,但我不确定如何去做。

假设我的固定误码率为2/10,错误突发长度从4到12位变化,并且无限比特流,我怎么能这样做,所以错误突发以随机的间隔发生具有4到12位的不同长度,同时仍然确保平均误码率收敛到2/10?

2 个答案:

答案 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的手段。