数字基带信号实验
一、实验目的:
学会利用MATLAB软件对数字基带信号的仿真。
通过实验提高学生实际动手
能力和编程能力,为日后从事通信工作奠定良好的基础。
二、实验内容:利用MATLAB软件编写数字基带信号程序,进一步加强对数字基
带信号的理解。
(1)单极性不归零数字基带信号
(2)双极性不归零数字基带信号
(3)单极性归零数字基带信号
(4)双极性归零数字基带信号
三、程序
(1) 单极性不归零数字基带信号程序
function y=zhou(x)
t0=200;
t=0:1/t0:length(x);
for i=1:length(x)
if(x(i)==1)
for j=1:t0
y((i-1)*t0+j)=1;
end
else
for j=1:t0
y((i-1)*t0+j)=0;
end
end
end
y=[y,x(i)]; M=max(y);
m=min(y);
subplot(1,1,1)
plot(t,y);grid on;
axis([0,i,m-0.1,M+0.1]);
title('1 0 0 1 1 0 0 0 0 1 0 1');
(2) 双极性不归零数字基带信号
function y=zhou(x)
t0=200;
t=0:1/t0:length(x);
for i=1:length(x)
if(x(i)==1)
for j=1:t0
y((i-1)*t0+j)=1;
end
else
for j=1:t0
y((i-1)*t0+j)=-1;
end
end
end
y=[y,x(i)]; M=max(y);
m=min(y);
subplot(1,1,1)
plot(t,y);grid on;
axis([0,i,m-0.1,M+0.1]);
title('1 0 0 1 1 0 0 0 0 1 0 1');
(3)单极性归零数字基带信号
function y=zhou(x)
t0=200;
t=0:1/t0:length(x);
for i=1:length(x)
if(x(i)==1)
for j=1:t0/2
y((2*i-2)*t0/2+j)=1;
y((2*i-1)*t0/2+j)=0;
end
else
for j=1:t0
y((i-1)*t0+j)=0;
end
end
end
y=[y,x(i)]; M=max(y);
m=min(y);
subplot(1,1,1)
plot(t,y);grid on;
axis([0,i,m-0.1,M+0.1]);
title('1 0 0 1 1 0 0 0 0 1 0 1')
(4)双极性归零数字基带信号
function y=zhou(x)
t0=200;
t=0:1/t0:length(x);
for i=1:length(x)
if(x(i)==1)
for j=1:t0/2
y((2*i-2)*t0/2+j)=1;
y((2*i-1)*t0/2+j)=0;
end
else
for j=1:t0/2
y((2*i-2)*t0/2+j)=-1;
y((2*i-1)*t0/2+j)=0;
end
end
end
y=[y,x(i)]; M=max(y);
m=min(y);
subplot(1,1,1)
plot(t,y);grid on;
axis([0,i,m-0.1,M+0.1]);
title('1 0 0 1 1 0 0 0 0 1 0 1');
四、实验结果以及分析:
(1)结果
图1单极性不归零
图2双极性不归零
图3单极性归零
图4双极性归零
(2)分析
由于此次实验是本次的第一次实验,实验内容比较简单,代码编写不是太复杂,只需要理解老师所给的单极性不归零码编程的含义结合理论课所讲的原理,可以很快的在单极性不归零码的基础上加以修改编写出其他三个代码,但此次实验中也遇到一些问题在于循环结束之后要不要给y再加上一个值(y=[y,x(i)];),此问题只要出自于t的长度比y的长度多1,因此给y再赋上一个值是肯定的,不加怎结果中会少一个值。