一、实验目的
了解数字基带信号(单极性归零、单极性不归零、双极性归零和双极性不归零)波形的特点,掌握利用matlab产生数字基带信号的方法。
二、实验任务
产生1000个随机信号序列,分别用单极性归零、单极性不归零、双极性归零和双极性不归零码编码,并求平均功率谱密度。利用matlab仿真软件编写程序,分别给出单极性归零、单极性不归零、双极性归零和双极性不归零波形以及它们对应的功率谱密度。
简述程序设计思路,分别给出单极性归零、单极性不归零、双极性归零和双极性不归零波形以及它们对应的功率谱密度,并对仿真结果进行分析获得有效结论。
三、实验部分代码
双极性归零码和双极性不归零码的波形和对应的功率谱代码如下:
clc,clear;
k=14; %采样点数的设置
L= 32; %每码元采样数的设置
N=2^k;
M=N/L; %M为码元个数
dt=1/L; %时域采样间隔
T=N*dt; %时域截断区间
df=1.0/T; %频域采样间隔
Bs=N*df/2; %频域截断区间
t=linspace(-T/2,T/2,N); %产生时域采样点
f=linspace(-Bs,Bs,N); %产生频域采样点
EP1=zeros(size(f));
EP2=zeros(size(f));
EP3=zeros(size(f));
%随机产生1000列0、1信号序列,分别对其进行双极性归零编码和不归零编码,并且求各自的功率谱密度,求功率谱密度的均值
for x=1:1000 %取1000次样值
k=round(rand(1,M)); %产生一个长度为M的随机序列a,0和1等概出现
nrz=zeros(L,M); %产生一个L行M列的nrz矩阵,初始化为全0矩阵
rz=zeros(L,M); %产生一个L行M列的rz矩阵,初始化为全0矩阵
for i=1:M
if k(i)==1
nrz(:,i)=1; %使nrz矩阵第i列全部元素都为1
rz(1:L/2,i)=1; %使rz矩阵第i列前L/2个元素为1
else
nrz(:,i)=-1; %使nrz矩阵第i列全部元素都为-1
rz(1:L/2,i)=-1; %使rz矩阵第i列前L/2个元素为-1
end
end
%分别重排nrz、rz矩阵为1行N列的矩阵
nrz=reshape(nrz,1,N);
rz=reshape(rz,1,N);
%作傅里叶变换并算出功率谱密度
NRZ=t2f(nrz,dt);
P1=NRZ.*conj(NRZ)/T;
RZ=t2f(rz,dt);
P2=RZ.*conj(RZ)/T;
%求功率谱密度的均值
EP1=(EP1*(x-1)+P1)/x;
EP2=(EP2*(x-1)+P2)/x;
end
figure(1)
subplot(2,2,1);plot(t,nrz)
axis([-5,5,min(nrz)-0.1,max(nrz)+0.1])
title('双极性不归零码','fontsize',12)
xlabel('t(ms)','fontsize',12)
ylabel('nrz(t)','fontsize',12)
grid on
subplot(2,2,2);plot(t,rz)
axis([-5,5,min(rz)-0.1,max(rz)+0.1])
title('双极性归零码','fontsize',12)
xlabel('t(ms)','fontsize',12)
ylabel('rz(t)','fontsize',12)
grid on
subplot(2,2,3);plot(f,EP1)
axis([-5,5,-0.1,1.2])
title('双极性不归零码功率谱密度图','fontsize',12)
xlabel('f(khz)','fontsize',12)
ylabel('P1(f)','fontsize',12)
grid on
subplot(2,2,4);plot(f,EP2)
axis([-5,5,-0.01,0.3])
title('双极性归零码功率谱密度图','fontsize',12)
xlabel('f(khz)','fontsize',12)
ylabel('P2(f)','fontsize',12)
grid on
%将时域信号作傅里叶变换到频域,x必须是二阶矩阵,dt是信号的时域分辨率
function X=t2f(x,dt)
X=fftshift(fft(x))*dt;
end
四、实验结果
图1 双极性二进制信号波形的MATLAB仿真结果
图2 单极性二进制信号波形的MATLAB仿真结果
如需要完整代码和实验报告,自行付积分查看,连接如下:
数字基带信号(单极性归零、单极性不归零、双极性归零和双极性不归零)波形仿真设计(matlab仿真)资源-CSDN文库