小编pse*_*rra的帖子

生成长期格雷码

对于通信系统,我需要一种特殊的格雷码.要求是:

  1. 与所有格雷码一样,两个连续值仅在一位上不同.
  2. 同一位上的两个转换应至少远离某些任意数量的值.最小行程长度为mrl.
  3. 我不关心从最后一个代码到第一个代码的距离,当代码翻转时mrl没有约束.

这种格雷码的一个例子是,对于5位且mrl = 4:

01111000011110000111100001111000
00111100000011111100001111110000
00011110000111100001111000011110
00001111110000111111000000111100
00000000111111110000000011111111
Run Code Online (Sandbox Code Playgroud)

本文给出了不同位数的最佳mrl值.然后,通过使用详尽的计算机搜索找到这些值.

我有python代码,适用于少量位,最多6位:

N = 5 # number of bit
mrl = 4 # minimum run length
first_transition = [0]
first_code = [0]

def Recur(previous_transitions, previous_codes):
  if len(previous_codes) == (2**N):
    for b in xrange(N):
      print ''.join([str((code >> (N-b-1)) & 1) for code in previous_codes])
    print
    return
  new_transition_list = range(N)
  for new_transition in new_transition_list:
    ok = True
    for i in xrange(mrl-1): #look back for transitions that are too close …
Run Code Online (Sandbox Code Playgroud)

python combinatorics gray-code

5
推荐指数
1
解决办法
521
查看次数

标签 统计

combinatorics ×1

gray-code ×1

python ×1