目录
3-1-1 8PSK信号生成子函数(对照给出4PSK信号生成子函数)
3-1-4 8PSK检测器子函数(对照给出4PSK检测器子函数)
一、实验目的
- 提高独立学习的能力
- 培养发现问题,解决问题,分析问题的能力
- 学习Matlab的使用
- 掌握MPSK通信系统的Monte Carlo仿真方法
- 掌握MPSK通信系统的组成原理
- 学习报告的写作、排版方法,掌握报告写作的重点,体现个人工作量和创新性。
二、实验原理
2-1调制解调原理
2-1-1发送端:一组M载波相位调制信号
2-1-2接收端:最佳检测器判决方法
2-2 8PSK系统框图
三、实验内容
3-1设计子函数
3-1-1 8PSK信号生成子函数(对照给出4PSK信号生成子函数)
功能:生成随机的3比特序列(二进制数),并将它们映射到 8PSK 信号的相应相位。计算每个3比特序列对应的同相(I)和正交(Q)分量。
输入:信号个数L
输出:同相(I)和正交(Q)分量、每个信号对应索引phase_index、8PSK的8个相位phases
首先用rand函数生成3*L个0到1之间的随机数,然后以0.5为界转化为1、0二进制序列。每三个一组,每组的3比特化为十进制数作为改组的phase_index,即格雷码。对应每个phase_index计算同相、正交分量。
function [I,Q,phase_index,phases] = yingshe(L)
rand_num = rand(1, L*3); % L个信号,每个信号对应3个比特,所以这里产生3*L个随机数
for j= 1:L*3 %随机数转化为0、1二进制序列
if rand_num(j) < 0.5
rand_num (j) = 0;
else
rand_num (j) = 1;
end
end
I = zeros(1, L);
Q = zeros(1, L);
phase_index= zeros(1, L);
% 定义8PSK的8个相位(以弧度为单位)
phases = [0, pi/4, 3*pi/4,pi/2, 7*pi/4,3*pi/2, pi, 5*pi/4];
%相位依次对应000 001 010 011 100 101 110 111
% 将二进制序列映射到8PSK
for i = 1:L
% 3个一组转换为3比特
bits = rand_num(3*i-2:3*i);
% 将3比特转换为十进制(格雷码)
phase_index(i) = bits(1) * 4 + bits(2) * 2 + bits(3)+1;%索引1来访问数组中的第一个元素
% 计算同相和正交分量
I(i) = cos(phases(phase_index(i)));
Q(i) = sin(phases(phase_index(i)));
end
end
④对照给出4PSK信号生成子函数代码及关键注释:(变更处已给出注释,思路一样)
function [Q_I,Q_Q,Q_phase_index,Q_phases] = Q_yingshe(L)
rand_num = rand(1, L*2); % L个信号,每个信号对应2个比特
for j= 1:L*2 %随机数转化为0、1二进制序列
if rand_num(j) < 0.5
rand_num (j) = 0;
else
rand_num (j) = 1;
end
end
Q_I = zeros(1, L);
Q_Q = zeros(1, L);
Q_phase_index= zeros(1, L);
% 定义QPSK的4个相位(以弧度为单位)
Q_phases = [0, pi/2, 3*pi/2, pi];
%相位依次对应00 01 10 11
% 将二进制序列映射到QPSK
for i = 1:L
% 2个一组转换为2比特
bits = rand_num(2*i-1:2*i);
% 将2比特转换为十进制
Q_phase_index(i) = bits(1) * 2 + bits(2) * 1 +1;
Q_I(i) = cos(Q_phases(Q_phase_index(i)));
Q_Q(i) = sin(Q_phases(Q_phase_index(i)));
end
end
标签:rand,Theory,index,Communication,MPSK,num,子函数,phase,8PSK
From: https://blog.csdn.net/junjun_shi/article/details/145125496