QPSK调制与解调-MATLAB基带仿真

仿真步骤

  1. 产生一定长度的值为0或1的随机序列 s ( t ) s(t) s(t)。
  2. 将 s ( t ) s(t) s(t)映射到QPSK星座图上的星座点。
  3. 产生I/Q两路高斯白噪声,将调制后的信号通过AWGN信道,得到输出信号 r ( t ) r(t) r(t)。
  4. 利用最小距离判决准则实现检测,统计误符号数。
  5. 绘制仿真误符号率与理论误符号率曲线,进行对比分析。

QPSK发送端星座图:

格雷码排布。
若使用非格雷码排布,误比特率会升高,对误符号率无影响。

QPSK相干解调

最小距离判决准则:

s ^ ( t ) = arg ⁡ min ⁡ 1 ≤ m ≤ M ∥ r ( t ) − s m ( t ) ∥ 2 2 \hat{s}(t)=\underset{1 \leq m \leq M}{\arg \min}{\|r(t)-s_m(t)\|_2^{2}} s^(t)=1≤m≤Margmin​∥r(t)−sm​(t)∥22​

QPSK理论误符号率:

P e = 2 Q ( 2 E b N 0 ) [ 1 − 1 2 Q ( 2 E b N 0 ) ] P_e=2Q(\sqrt{\frac{2 \mathcal{E}_{b}}{N_{0}}})\left[1-\frac{1}{2} Q(\sqrt{\frac{2 \mathcal{E}_{b}}{N_{0}}})\right] Pe​=2Q(N0​2Eb​​ ​)[1−21​Q(N0​2Eb​​ ​)]

仿真结果

MATLAB基带仿真程序

clc
clear
close all
% Title:  QPSK调制与解调 %
% Data:   2019.03.28 %
% Author: K.X.Song %
M = 4;                                  % 调制阶数
L_data = 1000000;                       % 数据长度
L_symbol = L_data/log2(M);              % 符号长度
data = round(rand(1,L_data));           % 原始数据
EbN0_dB = 0:12;                         % Eb/N0 dB形式
EbN0 = 10.^(EbN0_dB/10);                % Eb/N0
Eb = 1/log2(M);                         % 每比特能量
N0 = Eb ./ EbN0;                        % 噪声功率
error = zeros(1,length(EbN0_dB));       % 预置错误符号个数
ser = zeros(1,length(EbN0_dB));         % 预置仿真误符号率
tser_BPSK = zeros(1,length(EbN0_dB));   % 预置BPSK理论误符号率
tser_QPSK = zeros(1,length(EbN0_dB));   % 预置QPSK理论误符号率
% QPSK调制(格雷码排布)
send = zeros(1,L_symbol);               % 预设发送信号
send_set = [1,1j,-1,-1j];               % 发射端星座点
for q = 1:L_symbolif (data(2*q-1:2*q) == [0,0])send(q) = send_set(1);          % 00 => 1elseif (data(2*q-1:2*q) == [0,1])send(q) = send_set(2);          % 01 => 1jelseif (data(2*q-1:2*q) == [1,1])send(q) = send_set(3);          % 11 => -1elsesend(q) = send_set(4);          % 10 => -1jend
end
for q = 1:length(EbN0_dB)noise = sqrt(N0(q)/2)*randn(1,L_symbol) + 1j*sqrt(N0(q)/2)*randn(1,L_symbol);   % AWGNreceive = send + noise;             % 接收信号detect = zeros(1,L_symbol);         % 预置检测信号distance = zeros(1,M);              % 解调:距离检测 for t = 1:L_symbolfor w = 1:Mdistance(w) = norm(receive(t) - send_set(w))^2;     % 接收信号到所有星座点的距离endpos = find(distance == min(distance));      % 最小距离星座点的位置detect(t) = send_set(pos);                  % 解调后的符号if (detect(t) ~= send(t))error(q) = error(q) + 1;                % 统计错误符号数endendser(q) = error(q)/L_symbol;                     % QPSK仿真误符号率tser_BPSK(q) = qfunc(sqrt(2*EbN0(q)));          % BPSK理论误比特率tser_QPSK(q) = 2*qfunc(sqrt(2*EbN0(q)))*(1-qfunc(sqrt(2*EbN0(q)))/2);   % QPSK理论误符号率
end
figure
semilogy(EbN0_dB,ser,'o',EbN0_dB,tser_BPSK,'k',EbN0_dB,tser_QPSK,'b');     % 画图
grid on;                                        % 坐标轴开启
axis([0 10 10^-5 10^-1])                        % 限制作图范围
xlabel('Eb/N0 (dB)');                           % 横坐标
ylabel('SER');                                  % 纵坐标
legend('QPSK仿真误符号率','BPSK理论误符号率','QPSK理论误符号率');   % 图例

QPSK调制与解调-MATLAB基带仿真相关推荐

  1. 16QAM调制与解调-MATLAB基带仿真

    16QAM调制与解调-MATLAB基带仿真 ---------------------------- 2020.05.14更新:---------------------------------- 有 ...

  2. MFSK调制与相干解调-MATLAB基带仿真

    MFSK调制与相干解调-MATLAB基带仿真 MFSK调制原理 发送信号形式:(等概) s 1 = ( E , 0 , - , 0 ) s_{1}=(\sqrt{\mathcal{E}}, 0, \l ...

  3. (7,4)汉明码在BPSK系统下的性能-MATLAB基带仿真

    (7,4)汉明码在BPSK系统下的性能-MATLAB基带仿真 仿真步骤 产生一定长度的值为0或1的随机序列 d ( t ) d(t) d(t). 根据监督矩阵,将初始数据序列映射为编码后的二元序列 s ...

  4. 复信号的调制与解调(基带)

    Digital modulation methods can be considered as digital-to-analog conversion and the corresponding d ...

  5. matlab dpsk,2DPSK调制与解调matlab(最新整理)

    <2DPSK调制与解调matlab(最新整理)>由会员分享,可在线阅读,更多相关<2DPSK调制与解调matlab(最新整理)(5页珍藏版)>请在人人文库网上搜索. 1.- 2 ...

  6. 2DPSK调制解调matlab,2DPSK调制与解调-matlab

    <2DPSK调制与解调-matlab>由会员分享,可在线阅读,更多相关<2DPSK调制与解调-matlab(4页珍藏版)>请在人人文库网上搜索. 1.- 2DPSK 调制与解调 ...

  7. FPGA 数字信号处理之 FSK 调制、解调的实现与仿真基于 verilog + ise + modelsim + matlab (保姆级)

    试验说明: 笔者复现FSK调制.解调的过程中,在网上查了很多很多相关文章,至少在本文之前,没发现能在参考一篇博文的情况下能完整复现实验结果的.总之,全乎的基本没有. 本笔记(文)的目标是让入门者或者说 ...

  8. 信号的调制与解调matlab仿真,基于MATLAB对信号调制与解调的仿真

    基于MATLAB对信号调制与解调的仿真 2.3 2PSK的基本原理和调制解调实现 数字相移键控,记作PSK(Phase shift-keying ),二进制相位键控记作2PSK. 2PSK就是根据基带 ...

  9. matlab qpsk调试 rls均衡,通信系统仿真速成第2天:QPSK调制与解调(实验)

    今天这个是真正的过了信道的信号. 单载波QPSK.QPSK算是通过了. 简直就是个速成班啊--惨---- 关于CMA的介绍,可以参考Matlab的文档. Reviews:Matlab中关于CMA的介绍 ...

最新文章

  1. Hibernate flush理解
  2. Sublime搭建Python环境
  3. 这7款APP到底有什么好,值得知乎2万人点赞,原来如此!
  4. 在Oracle中exception关键字,Oracle表字段有Oracle关键字出现异常解决方案
  5. volley框架下发送和读取cookie
  6. 邮件服务器收发邮件时常发生的问题
  7. 征战蓝桥 —— 2018年第九届 —— C/C++B组第1题——第几天
  8. DotText源码阅读(7) --Pingback/TrackBack
  9. java 代码风格_Java代码风格:最终决定
  10. Chrome 爬虫插件 Web Scraper
  11. java面向对象第一课,定义类,模拟人的行为:吃饭工作休息
  12. ES6新语法--箭头函数
  13. linux 磁盘分区对齐,linux查看硬盘4K对齐方法
  14. Linux 变量和结构体
  15. 《小猪佩奇过大年》首映 导演解答“啥是佩奇”
  16. DevExpress XtraTreeList的复选框 禁用
  17. MySQL基础入门《2》创建数据库并插入数据
  18. Python期末复习题及代码
  19. STM32L476RG利用串口下载程序
  20. 为什么要学数学--读《给讨厌数学的人》第二章之读书笔记

热门文章

  1. 【原创·论文翻译】GaitSet-旨在用自己的语言表达出作者的真实意图
  2. Verilog实现AD574驱动(有限状态机)
  3. vivado错误日志 [Place 30-574]
  4. 「Java」基于Mirai的qq机器人开发踩坑笔记(其一)
  5. 百度松果线上菁英班(竞赛真题MC0101~MC0104)
  6. jmap的用法:Java 内存映像工具 jmap -heap pid
  7. 【ForOffer】【深信服--测试开发岗笔试题】求最少车费求最低位找马甲找字符串子串
  8. 如何制作一个注册表文件
  9. 学习大神作品(vue源码三)
  10. get请求返回参数过大约8M左右,UT010029: Stream is closed