clear all;
close all
Ts = 1; %码元周期
N_sample = 1000; %每个码元抽样点数
fs=N_sample;
dt = Ts/N_sample; %抽样的时间间隔
N = 2000; %码元数
t = 0:dt:(N*N_sample-1)*dt;
%!!!!!!!!!!!!!!!!!!!!!!!!!
df = fs/length(t);
f = -fs/2:df:fs/2-df; %定义频率矢量(频谱图的横坐标)
% 基本码元 g(t) = 1
gt0 = zeros(1,N_sample);
gt1 = ones(1,N_sample); %单极性不归零
gt2 = [ones(1,N_sample/2),zeros(1,N_sample/2)]; %单极性归零,占空比为0.5
gt3 = gt0-gt1; %双极性不归零
gt4 = [zeros(1,N_sample/2)-ones(1,N_sample/2),zeros(1,N_sample/2)];%双极性归零
%生成随机码元
random_code = randi([0,1],1,N);
%单极性波形的最后结果
yt1 = zeros(1,N*N_sample-1); %单极性不归零NRZ波形
yt2 = zeros(1,N*N_sample-1); %单极性不归零NRZ波形
yt3 = zeros(1,N*N_sample-1); %双极性不归零NRZ波形
yt4 = zeros(1,N*N_sample-1); %双极性归零RZ波形
for i = 1:N
if random_code(i) == 1 %得到波形图
yt1((i-1)*N_sample+1:i*N_sample) = gt1; %单极性不归零NRZ波形
yt2((i-1)*N_sample+1:i*N_sample) = gt2; %单极性归零RZ波形
yt3((i-1)*N_sample+1:i*N_sample) = gt1; %双极性不归零NRZ波形
yt4((i-1)*N_sample+1:i*N_sample) = gt2; %双极性归零RZ波形
else
yt1((i-1)*N_sample+1:i*N_sample) = gt0;
yt2((i-1)*N_sample+1:i*N_sample) = gt0;
yt3((i-1)*N_sample+1:i*N_sample) = gt3;
yt4((i-1)*N_sample+1:i*N_sample) = gt4;
end
end
%*********************************************************************
%求单极性不归零时域波形于波功率谱密度
figure(1)
plot(t,yt1,'LineWidth',1.5);
axis([0 20 -0.1 1.1]);
title('二进制单极性不归零NRZ波形');
xlabel('时间t/s');
grid;
figure(2)
fmt=fft(yt1); % 对时域信号进行FFT变换,计算其频谱
fmt=fftshift(fmt);
fmt=abs(fmt);
fmt_dB=fmt.^2/Ts;
maxF=max(fmt_dB);
fmt_dB=fmt_dB/maxF;
fmt_dB= 10*log10(fmt_dB +eps);
plot(f,fmt_dB);grid on;
axis([-6 6 -80 0]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('二进制单极性不归零NRZ波形功率谱密度(db)');
%*********************************************************************
%*********************************************************************
%求单极性归零时域波形与波功率谱密度
figure(3)
plot(t,yt2,'LineWidth',1.5);
title('二进制单极性归零RZ波形');
xlabel('时间t/s');
axis([0,20,-0.09,1.1]); %画出单极性归零RZ波形功率谱密度
grid;
figure(4)
fmt=fft(yt2); % 对时域信号进行FFT变换,计算其频谱
fmt=fftshift(fmt);
fmt=abs(fmt);
fmt_dB=fmt.^2/Ts;
maxF=max(fmt_dB);
fmt_dB=fmt_dB/maxF;
fmt_dB= 10*log10(fmt_dB +eps);
plot(f,fmt_dB);grid on;
axis([-6 6 -80 0]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('二进制单极性归零RZ波形功率谱密度(db)');
%*********************************************************************
%*********************************************************************
%求双极性不归零时域波形与波功率谱密度
figure(5)
plot(t,yt3,'LineWidth',1.5);
title('二进制双极性不归零波形');
xlabel('时间t/s');
axis([0 20 -1.1 1.1])
grid;
figure(6)
fmt=fft(yt3); % 对时域信号进行FFT变换,计算其频谱
fmt=fftshift(fmt);
fmt=abs(fmt);
fmt_dB=fmt.^2/Ts;
maxF=max(fmt_dB);
fmt_dB=fmt_dB/maxF;
fmt_dB= 10*log10(fmt_dB +eps);
plot(f,fmt_dB);grid on;
axis([-6 6 -80 0]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
axis([-6 6 -55 25])
title('二进制双极性不归零波形功率谱密度(db)');
%*********************************************************************
%*********************************************************************
%求双极性归零时域波形与波功率谱密度
figure(7)
plot(t,yt4,'LineWidth',1.5);
title('二进制双极性归零波形');
xlabel('时间t/s');
axis([0 20 -1.1 1.1])
grid;
figure(8)
fmt=fft(yt4); % 对时域信号进行FFT变换,计算其频谱
fmt=fftshift(fmt);
fmt=abs(fmt);
fmt_dB=fmt.^2/Ts;
maxF=max(fmt_dB);
fmt_dB=fmt_dB/maxF;
fmt_dB= 10*log10(fmt_dB +eps);
plot(f,fmt_dB);grid on;
axis([-6 6 -80 0]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
axis([-6 6 -55 25])
title('二进制双极性归零波形功率谱密度(db)');
%*********************************************************************
%*********************************************************************
%求单极性不归零四进制波形与波功率谱密度
yt5 = zeros(1,N*fs);
random_code4 = randi([0,3],1,N);
for i = 1:N
if random_code4(i) == 0 %得到波形图
yt5((i-1)*fs+1:i*fs) = gt0; %四进制单极性不归零NRZ波形
elseif random_code4(i) == 1
yt5((i-1)*fs+1:i*fs) = gt1;
elseif random_code4(i) == 2
yt5((i-1)*fs+1:i*fs) = 2*gt1;
else
yt5((i-1)*fs+1:i*fs) = 3*gt1;
end
end
figure(9);
plot(t,yt5,'LineWidth',2);
title('四进制单极性不归零基带信号');
xlabel('时间(s)');
ylabel('电压值(V)');
grid on;
axis([0 20 -0.1 3.1])
f5=fft(yt5);
fmt5 = fftshift(f5);
fmtA5=abs(fmt5);
fmtA5_dB=fmtA5.^2/Ts;
maxF5=max(fmtA5_dB);
fmtA5_dB=fmtA5_dB/maxF5;
fmtA5_dB=10*log10(fmtA5_dB+eps);
figure(10);
plot(f,fmtA5_dB,'LineWidth',1);
title('四进制单极性不归零基带信号功率谱(dB)');
xlabel('频率(Hz)');
ylabel('功率谱幅度值(dB)');
grid on;
axis([-6 6 -80 0])
%*********************************************************************
%*********************************************************************
%求单极性不归零八进制波形与波功率谱密度
yt6 = zeros(1,N*fs);
random_code8 = randi([0,7],1,N);
for i = 1:N
if random_code8(i) == 0 %得到波形图
yt6((i-1)*fs+1:i*fs) = gt0; %八进制单极性不归零NRZ波形
elseif random_code8(i) == 1
yt6((i-1)*fs+1:i*fs) = gt1;
elseif random_code8(i) == 2
yt6((i-1)*fs+1:i*fs) = 2*gt1;
elseif random_code8(i) == 3
yt6((i-1)*fs+1:i*fs) = 3*gt1;
elseif random_code8(i) == 4
yt6((i-1)*fs+1:i*fs) = 4*gt1;
elseif random_code8(i) == 5
yt6((i-1)*fs+1:i*fs) = 5*gt1;
elseif random_code8(i) == 6
yt6((i-1)*fs+1:i*fs) = 6*gt1;
else
yt6((i-1)*fs+1:i*fs) = 7*gt1;
end
end
figure(11);
plot(t,yt6,'LineWidth',2);
title('八进制单极性不归零基带信号');
xlabel('时间(s)');
ylabel('电压值(V)');
grid on;
axis([0 20 -0.1 7.1])
f6=fft(yt6);
fmt6 = fftshift(f6);
fmtA6=abs(fmt6);
fmtA6_dB=fmtA6.^2/Ts;
maxF6=max(fmtA6_dB);
fmtA6_dB=fmtA6_dB/maxF6;
fmtA6_dB=10*log10(fmtA6_dB+eps);
figure(12);
plot(f,fmtA6_dB,'LineWidth',1);
title('八进制单极性不归零基带信号功率谱(dB)');
xlabel('频率(Hz)');
ylabel('功率谱幅度值(dB)');
grid on;
axis([-6 6 -80 0])