通信信号完整基带传输过程的python实现(一)——差分manchester编码

2017-07-16 11:13:42来源:CSDN作者:m0_37572614人点击

好久好久没写了= =、、其实好像也只写了第一篇,放暑假了,也算腾出点时间往后更新一下了,第二篇讲差分manchester编码。manchester主要是为了丰富信号中的突变量,将1信号变成10,将0信号变成01,而对于差分manchester则是先确定第一个信号对应10,之后如果遇到1则信号改变,变成01,如果遇到0,则信号保持不变,详细的变化模式可以参照下图

这里写图片描述
下面嘛、、、似乎就可以上代码了,算法思想分析完了,其实很简单,用一个两个数组,一个记录原pcm,一个储存转换后的,但是有一点要注意就是在每一个pcm的最后应该预留一个两位的数组空间使得连续两条pcm编码之间能够接续上
比如说: 10111100
11001011
那么下一个的1是基于上一个最后一个0进行的变化,而不是另起炉灶,下面是部分代码。

#!/usr/bin/python# -*- coding:utf-8 -*-# Author: Sandimport timedef demanchester(manchester):#解码部分,将manchester变为pcm    fp = open("demanchester.txt", "a")    i = 0    result = []    if manchester[0] == 1 and manchester[1] == 0:        result.append(1)    else:        result.append(0)    j = 0    for i in range(2,27,2):        if manchester[i-2]==manchester[i] and manchester[i-1]==manchester[i+1]:             result.append(0)        else:             result.append(1)        j = j + 1    for i in range(0, 14):        a = result[i]        fp.write(str(a)),    fp.write("/n")    fp.close()    return resultdef manchester(pcm):#编码部分,将传进来的pcm转变为manchester并写入文件    fp = open("manchester.txt", "a")    i = 0    result = []    manche = []    for i in pcm:        result.append(i)    if result[0]==0:        manche.append(0)        manche.append(1)    if result[0]==1:        manche.append(1)        manche.append(0)    j = 2    for i in range(1,14):        if result[i]==1 :            manche.append(manche[j-1])            manche.append(manche[j-2])        if result[i]==0:            manche.append(manche[j-2])            manche.append(manche[j-1])        j = j + 2    for i in range(0, 27):        a = manche[i]        fp.write(str(a)),    fp.write("/n")    fp.close()    return mancheif __name__ == '__main__':    manchester()

微信扫一扫

第七城市微信公众平台