clear all;
Ts = 1; %码元周期
N_sample = 5000; %每个码元抽样点数
fs=N_sample; %抽样频率
fs_c = 500; %载波频率
dt = Ts/N_sample; %抽样的时间间隔
N = 200; %码元数
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); %单极性不归零
%生成随机码元
random_code = randi([0,1],1,N);
%单极性波形的最后结果
yt1 = zeros(1,N*N_sample-1); %单极性不归零NRZ波形
for i = 1:N
if random_code(i) == 1 %得到波形图
yt1((i-1)*N_sample+1:i*N_sample) = gt1; %单极性不归零NRZ波形
else
yt1((i-1)*N_sample+1:i*N_sample) = gt0;
end
end
%*********************************************************************
%求单极性不归零时域波形于波功率谱密度,进行2ASK调制
figure(1)
subplot(211)
plot(t,yt1);
axis([0 12 -0.1 1.1]);
title('单极性不归零二进制基带信号');
xlabel('时间t/s');
grid;
subplot(212)
carrier = cos(2*pi*fs_c*t);
yt1_mod = yt1.*carrier;
plot(t,yt1_mod,'LineWidth',0.01);
axis([0 12 -1.1 1.1]);
title('2ASK调制信号');
xlabel('时间t/s');
grid;
figure(2)
subplot(211)
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([-15 15 -150 0]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('单极性不归零二进制基带信号功率谱密度(db)');
subplot(212)
fmt=fft(yt1_mod); % 对时域信号进行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([-600 600 -150 0]);
xlabel('频率(Hz)');ylabel('功率谱幅度值(dB)');
title('2ASK调制信号功率谱密度(db)');
%*********************************************************************
%ASK已调信号上叠加噪声
figure(3)
subplot(211)
plot(t,yt1_mod);
axis([0 12 -1.1 1.1]);
title('2ASK调制信号');
xlabel('时间t/s');
grid;
subplot(212)
yt1_mod_awgn = awgn(yt1_mod,10,'measured');
plot(t,yt1_mod_awgn);
axis([0 12 -2 2]);
title('接收端叠加噪声后的ASK调制信号波形图');
xlabel('时间t/s');
grid;
%全波整流
figure(4)
yt1_mod_awgn = abs(yt1_mod_awgn);
subplot(211)
plot(t,yt1_mod_awgn);
axis([0 12 -0.1 2]);
title('2ASK调制信号');
xlabel('时间t/s');
grid;
subplot(212)
fmt=fft(yt1_mod_awgn); % 对时域信号进行FFT变换,计算其频谱
fmt=fftshift(fmt);
plot(f,abs(fmt));grid on;
axis([-1100 1100 -1 410000]);
xlabel('频率(Hz)');ylabel('频谱幅度值');
title('全波整流信号的幅频特性');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%对全波整流后的信号进行理想低通滤波
figure(5)
subplot(211)
% 进行低通滤波
fpass = 0;
fstop = 10;
[f1,fmt] = IdealFilter(length(t),fs,fpass,fstop,fft(yt1_mod_awgn)); % 进行理想带通滤波
spf_t = ifft(fmt);
plot(t,spf_t);grid on;
axis([0 12 -0.1 0.8]);
xlabel('时间(s)');ylabel('电压值(V)');
title('全波整流信号经过低通滤波后的包络信号波形图');
subplot(212)
spf=fft(spf_t); % 对时域信号进行FFT变换,计算其频谱
spf1=fftshift(spf);
plot(f,abs(spf1));grid on;
axis([-30 30 -1 410000]);
xlabel('频率(Hz)');ylabel('频谱幅度值');
title('全波整流信号的低通滤波结果');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
figure(6)
spf_t = 2*spf_t;
subplot(211)
plot(t,spf_t);
axis([0 12 -0.1 1.5]);
title('包络检波后被调制信号波形图');
xlabel('时间t/s');
grid;
subplot(212)
plot(t,yt1);
axis([0 12 -0.1 1.1]);
title('发送端的被调制信号波形图');
xlabel('时间t/s');
grid;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%抽样判决
r=zeros(1,N_sample*N);
for i = 1:N-1
if spf_t((i-0.5)*N_sample) > 0.75 %得到波形图
r((i-0.5)*N_sample+1:(i+0.5)*N_sample) = gt1; %单极性不归零NRZ波形
else
r((i-0.5)*N_sample+1:(i+0.5)*N_sample) = gt0;
end
end
figure(7)
subplot(211)
plot(t,yt1);
axis([0 12 -0.1 1.1]);
title('发送端的被调制信号波形图');
xlabel('时间t/s');
grid;
subplot(212)
plot(t,r);
axis([0 12 -0.1 1.1]);
title('接收采样判决后恢复的被调制信号波形图');
xlabel('时间t/s');
grid;