【问题标题】:Algorithm for simulating burst errors用于模拟突发错误的算法
【发布时间】:2013-07-26 15:42:20
【问题描述】:

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

假设我有 2/10 的固定误码率和从 4 位到 12 位不等的错误突发长度和无限的位流,我怎样才能让它以随机间隔发生错误突发长度从 4 位到 12 位不等,同时仍确保平均误码率收敛到 2/10?

【问题讨论】:

  • 我认为在math.stackexchange.comdsp.stackexchange.com 上发帖会更好。我可以对如何解决您的问题做出一些幼稚的猜测,但我并没有声称在概率或信号处理方面有任何专业知识。

标签: algorithm math simulation


【解决方案1】:

假设您在选择错误位突发的长度时对集合[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

【讨论】:

  • 不错的方法,只是它偶尔会产生可能超过指定的最大序列长度 12 的背靠背错误序列。您应该在恢复几何采样之前强制至少一个非错误,并且相应地将平均值下调一。
  • @pjs OP 实际上并没有指定错误突发必须是不相邻的......我已经更新以提供这种情况的算法。
  • 是的,但我认为它隐含在指定长度的上限。也许 OP 会澄清他的意图。
【解决方案2】:

您告诉我们一个范围,但没有指定错误突发长度的分布,也没有指定干净间隔长度的分布。范围内的所有值的可能性是否相同,4 的出现频率是否高于 12 的出现频率,反之亦然,或者说,6 是最常见的情况?

假设您有错误突发长度的分布 E 和干净间隔长度的 C 分布,这意味着 M_e 和 M_c,分别。然后你需要做的是派生/构造一个参数化 C 分布,使 M_c = 4 M_e。要启动该过程,请为您的第一个间隔选择概率为 0.2 的错误突发与概率为 0.8 的干净间隔。然后使用 EC 分布在错误周期和清理周期之间交替以生成持续时间。

例如,如果两种类型的间隔都遵循均匀分布,则平均错误突发长度为 8,您需要平均长度为 32 的干净间隔。您可以使用 U(31,33)、U(1 ,63) 或 U(10,54),例如 - 所有三个都有 32 的平均值。

【讨论】:

  • 谢谢!是的,错误突发长度的所有值的可能性均等。
猜你喜欢
  • 2015-03-03
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 2015-01-30
  • 1970-01-01
  • 2017-01-31
相关资源
最近更新 更多