实验总览
主要完成2PSK和2DPSK的调制和解调,对调制方法,已调信号特性,解调方法进行分析。
2PSK
2PSK产生
2PSK信号发生程序
function [signal, csignal, baseband, t] = tPSK(N, TB, fc, fs)
%% 一个码元多少个采样点
L = TB * fs;
%% 2PSK信号采样点
t = 0 : 1 / fs : N * TB - 1 / fs;
%% 载波定义
tc = 0 : 1 / fs : TB - 1 / fs;
%% 二进制符号
symbols = round(rand(1, N));
signal = zeros(1, N * L);
baseband = zeros(1, N * L);
for i = 1 : N
if symbols(i) == 1
signal((i - 1) * L + 1 : i * L) = cos(2 * pi * fc * tc + pi);
else
signal((i - 1) * L + 1 : i * L) = cos(2 * pi * fc * tc);
end
end
for i = 1 : N
if symbols(i) == 1
baseband((i - 1) * L + 1 : i * L) = 1;
else
baseband((i - 1) * L + 1 : i * L) = 0;
end
end
csignal = cos(2 * pi * fc * t);
end
实验主程序
clc;clear;
%% 2PSK参数定义
N = 20;
fB = 1;
TB = 1 / fB;
fc = 100;
fs = 600;
%% 产生2PSK信号
[signal, csignal, baseband, t] = tPSK(N, TB, fc, fs);
%% 2PSK相干解调
dmode_co = coherent(signal, -csignal, 1.5 * fB, fc / 1.5, fs, TB);
%% 抽样判决
saps = sj(dmode_co, TB, fs);
dbaseband = SNRZ(saps, TB, fs);
%% 频谱分析
L = length(t);
n = - 1 / 2 + 1 / L : 1 / L : 1 / 2;
f = n * fs;
HFB = fftshift(fft(baseband));
HFC = fftshift(fft(signal));
HFDC = fftshift(fft(dmode_co));
% HFDR = fftshift(fft(dmode_rc));
%% 基带信号和2ASK信号对比
%% 基带信号和2ASK信号时域波形
% figure(1)
% subplot(2, 1, 1); plot(t, baseband, 'LineWidth', 1.2); title('基带信号');
% subplot(2, 1, 2); plot(t, signal, 'LineWidth', 1.2); title('2ASK信号');
%% %% 基带信号和2ASK信号频谱
% figure(2)
% subplot(2, 1, 1); plot(f, abs(HFB), 'LineWidth', 1.2); title('基带信号');
% subplot(2, 1, 2); plot(f, abs(HFC), 'LineWidth', 1.2); title('2ASK信号');
%% 2PSK相干解调后信号与基带信号和2[SK信号对比
figure(3)
subplot(4, 1, 1); plot(t, baseband, 'LineWidth', 1.2); title('基带信号');
% subplot(3, 1, 1); plot(f, abs(HFB), 'LineWidth', 1.2); title('基带信号');
subplot(4, 1, 2); plot(t, signal, 'LineWidth', 1.2); title('2PSK信号');
% subplot(3, 1, 2); plot(f, abs(HFC), 'LineWidth', 1.2); title('2PSK信号');
subplot(4, 1, 3); plot(t, dmode_co, 'LineWidth', 1.2); title('相干解调后的信号');
% subplot(3, 1, 3); plot(f, abs(HFDC), 'LineWidth', 1.2); title('相干解调后的信号');
subplot(4, 1, 4); plot(t, dbaseband, 'LineWidth', 1.2); title('抽样判决后');
%% 眼图
% figure(4);
% neye = 1;
% L = TB * fs;
% for k = 1 : N - neye + 1
% ss = dmode_rc((k - 1) * L + 1 : ((k - 1) + neye) * L);
% plot(ss,'LineWidth', 1.2);
% hold on;
% end
% hold on;
% title('接收信号眼图 eyenum = 1');
实验结果
2PSK信号时域波形