最近一个作业需要生成M序列,在网上找了一圈发现大部分都是matlab的代码,我不太会用matlab,也想过要不要把matlab函数转换成python程序。在查看完那些matlab程序后觉得转python其实不好,matlab的逻辑和python不同,大部分matlab程序在实现M序列的时候都把问题复杂化了。所以我重写了程序,具体的代码如下:
首先需要numpy库,生成零矩阵的时候要用到
import numpy as np
接着写了一个求异或的函数,一开始以为python库里面有,找了半天没找到,好在函数并不复杂。
def xor(x, y):
return bool((x and not y) or (not x and y))
接着就是函数本体
def mseq(coef):
st = coef
backQ = xor(coef[-1],coef[-2])
result = [int(backQ)]
temp = []
temp.extend(st[:-1])
temp.insert(0,int(backQ))
while(st != temp):
backQ = xor(temp[-1],temp[-2])
result.append(int(backQ))
temp = temp[:-1]
temp.insert(0,int(backQ))
return result
试着输入一个数组,结果应该没问题,后面这个程序还需要改进
print(mseq([1,0,1,0,1,1,0,0,0,0]))
结果如下:



