%密勒码 miler.m
function y=miler(x)
%本函数实现将输入的一段代二进制代码编为相应的密勒码输出
%输入X为二进制码,输出Y为编好的码
%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示
grid=100;
t=0:1/grid:length(x); %给出相应的时间序列
i=1 %因为这里是直接对一段二进制数编码
if(x(i)==1) %前面的值不定,所以第一值我们单独给出
for j=1:grid/2 %若第一个信息为1
y(grid/2*(2*i-2)+j)=0; %定义前半时间为0
y(grid/2*(2*i-1)+j)=1;%定义后半时间为1
end
else
for j=1:grid %反之,输入信息为0
y(grid*(i-1)+j)=0; %所有时间为0
end
end
for i=2:length(x) %从第二个信息起编码与前面的码元有关系
if(x(i)==1)
for j=1:grid/2 %前半时间与前一码元后半时间值相同
y(grid/2*(2*i-2)+j)=y(grid/2*(2*i-3)+grid/4);
%后半时间值 与本码元间半时间值相反
y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);
end
else
if(x(i-1)==1) %输入为0,若前一信息为1
for j=1:grid
%所有时间与前一码元后半时间值相同
y(grid*(i-1)+j)=y(grid/2*(2*i-3)+grid/4);
end
else %否则前一信息为0
for j=1:grid
%所有时间值与前一码元后半时间值相反
y(grid*(i-1)+j)=1-y(grid/2*(2*i-3)+grid/4);
end; end; end; end
y=[y,y(i*grid)];
M=max(y); m=min(y);
plot(t,y);axis([0,i,m-0.1,M+0.1]);
title('1 0 0 1 1 0 0 0 0 1 0 1');
%曼彻斯特码(数字双相码)macheser.m
function y=macheser(x)
%本函数实现将输入的一段代二进制代码编为相应的数字双相码输出
%输入X为二进制码,输出Y为编好的码
%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示
grid=300;
t=0:1/grid:length(x); %给出相应的时间序列
for i=1:length(x) %计算码元的值
if(x(i)==1) %若输入信息为1
for j=1:grid/2
y(grid/2*(2*i-2)+j)=1; %定义前半时间为1
y(grid/2*(2*i-1)+j)=0;%定义后半时间为0
end
else
for j=1:grid/2
y(grid/2*(2*i-2)+j)=1;
y(grid/2*(2*i-1)+j)=0;
end; end; end
y=[y,x(i)]; %给序列Y加上最的一位,便于做图
M=max(y); m=min(y);
plot(t,y);axis([0,i,m-0.1,M+0.1]);
title('1 0 0 1 1 0 0 0 0 1 0 1');
%条件双相码 dmachester.m
function y=dmachester(x)
%本函数实现将输入的一段代二进制代码编为相应的条件双相码输出
%输入X为二进制码,输出Y为编好的码
%给出计算每一个码元的点数,因为我们只有用离散的点来得出连续的函数表示
grid=100;
t=0:1/grid:length(x); %给出相应的时间序列
i=1 %因为这里是直接对一段二进制数编码
if(x(i)==1) %前面的值不定,所以第一值我们单独给出
for j=1:grid/2 %若第一个信息为1
y(grid/2*(2*i-2)+j)=0; %定义前半时间为1
y(grid/2*(2*i-1)+j)=1;%定义后半时间为0
end
else
for j=1:grid/2 %反之,输入信息为0
y(grid/2*(2*i-2)+j)=1;
y(grid/2*(2*i-1)+j)=0;
end
end
for i=2:length(x) %从第二个信息起编码与前面的码元有关系
if(x(i)==1)
for j=1:grid/2 %前半时间与前一码元后半时间值相反
y(grid/2*(2*i-2)+j)=1-y(grid/2*(2*i-3)+grid/4);
%后半时间值 与本码元间半时间值相反
y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);
end
else
for j=1:grid/2 %输入为0时
%前半时间与前一码元后半时间值相同
y(grid/2*(2*i-2)+j)=y(grid/2*(2*i-3)+grid/4);
%后半时间值与本码元间半时间值相反
y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);
end; end; end
y=[y,y(i*grid)];
M=max(y); m=min(y);
plot(t,y);axis([0,i,m-0.1,M+0.1]);
title('1 0 0 1 1 0 0 0 0 1 0 1');
%对二元序列10110010画出幅度键控2ASK的波形
t=0:0.01:8;
y=sin(2*pi*t); %载波
x=[ones(1,100),zeros(1,100),ones(1,100),ones(1,100), zeros(1,100),zeros(1,100),ones(1,100),zeros(1,101)];
%定义一个与二元序列对应的时间序列
<< 上一页 [11] [12] [13] [14] 下一页