对应的点值取1y2i2t02j0定义前半段时间值为0y2i1t02j0定义后半段时间值为0e
d
p00else
forj1t02如果输入信息为1,码元对应的点值取1y2i2t02j1定义前半段时间值为1y2i1t02j1定义后半段时间值为1e
d
p01e
de
de
de
d
Nle
gthytempyNyytempplottyaxis0i0111x11101001000110title米勒码
f10编制一个函数,用于产生AMI(传号交替反转码)。
amim
fu
ctio
yamix输入x为二进制码,输出y为编好的码t0200每个码元200个点t01t0le
gthx时间序列p01由于遇到“1”交替变换为“1”和“1”,因此初始信息为1fori1le
gthx计算机码元的值
ifxi1
ifp01forj1t02如果输入信息为1,码元对应的点值取1y2i2t02j1定义前半段时间值为1y2i1t02j0定义后半段时间值为0
e
d
p01
else
forj1t02
fy2i2t02j1定义前半段时间值为1y2i1t02j0定义后半段时间值为0e
dp01e
d
else
forj1t0
如果输入信息为1,码元对应的点值取1
yi1t0j0
e
d
e
d
e
d
Nle
gthytempyNyytempplottyaxis0i1111title传号交替反转码
fhdb3m
fu
ctio
yhdb3x输入x为二进制码,输出y为编好的码t0200每个码元200个点t01t0le
gthx时间序列zerocou
t0该变量用于统计连零的数量bcou
t0该变量用于统计上一个V脉冲以来B脉冲的数量B1该变量存储前一个脉冲的极性,等于1时为正脉冲,等于负1时为负脉冲.
循环处理二进制序列
fori1le
gthx
ifxi1
如果为符号1
zerocou
t0连零统计清零
bcou
tbcou
t1B脉冲数量1
ifB1
如果前一个脉冲为正脉冲,输出一个负脉冲
forj1t02
y2i2t02j1
y2i1t02j0
e
d
B1更新B
else如果前一个脉冲为负脉冲,输出一个正脉冲
forj1t02
y2i2t02j1
y2i1t02j0
e
d
B1更新B
e
d
else
如果符号为0
zerocou
tzerocou
t1连零统计1
ifzerocou
t4如果连零数量等于4
ifmodbcou
t21如果自上一V脉冲以来已经有了奇数个
B
ifB1
如果前一个脉冲为正脉冲,输出一个正的V脉冲,这时取代
节是000V
forj1t02
y2i2t02j1
y2i1t02j0
e
d
f是000V
else如果前一个脉冲为负脉冲,输出一个负的V脉冲,这时取代节
forj1t02
y2i2t02j1
y2i1t02j0
e
d
e
delse如果自上一V脉冲以来已经有了偶数个B
ifB1如果前一个脉冲为正脉冲,输出一个负的V脉冲,这时取代
B00V节是
forj1t02
y2i2t02j1
y2i1t02j0
e
dforj1t02
调整往前数第三个符号r