资源简介
用MATLAB绘制常用数字基带信号的波形和功率谱密度,归零码,不归零码等
代码片段和文件信息
clear 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(1N_sample);
gt1 = ones(1N_sample); %单极性不归零
gt2 = [ones(1N_sample/2)zeros(1N_sample/2)]; %单极性归零,占空比为0.5
gt3 = gt0-gt1; %双极性不归零
gt4 = [zeros(1N_sample/2)-ones(1N_sample/2)zeros(1N_sample/2)];%双极性归零
%生成随机码元
random_code = randi([01]1N);
%单极性波形的最后结果
yt1 = zeros(1N*N_sample-1); %单极性不归零NRZ波形
yt2 = zeros(1N*N_sample-1); %单极性不归零NRZ波形
yt3 = zeros(1N*N_sample-1); %双极性不归零NRZ波形
yt4 = zeros(1N*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(tyt1‘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(ffmt_dB);grid on;
axis([-6 6 -80 0]);
xlabel(‘频率(Hz)‘);ylabel(‘功率谱幅度值(dB)‘);
title(‘二进制单极性不归零NRZ波形功率谱密度(db)‘);
%*********************************************************************
%*********************************************************************
%求单极性归零时域波形与波功率谱密度
figure(3)
plot(tyt2‘LineWidth‘1.5);
title(‘二进制单极性归零RZ波形‘);
xlabel(‘时间t/s‘);
axis([020-0.091.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(ffmt_dB);grid on;
axis([-6 6 -80 0]);
xlabel(‘频率(Hz)‘);ylabel(‘功率谱幅度值(dB)‘);
title(‘二进制单极性归零RZ波形功率谱密度(db)‘);
%*********************************************************************
%*********************************************************************
%求双极性不归零时域波形与波功率谱密度
figure(5)
plot(tyt3‘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/T
评论
共有 条评论