clc
clear
close all
% Title:  16QAM调制与解调 %M = 16;                                 % 调制阶数
L_data = 10000;                       % 数据长度
L_symbol = L_data/log2(M);              % 符号长度
data = round(rand(1,L_data));           % 原始数据
EbN0_dB = 0:14;                         % Eb/N0 dB形式
EbN0 = 10.^(EbN0_dB/10);                % 每比特能量/噪声
EsN0 = log2(M) * EbN0;                  % 每符号能量/噪声
error = zeros(1,length(EbN0_dB));       % 预置错误符号个数
ser = zeros(1,length(EbN0_dB));         % 预置仿真误符号率tser_16QAM = zeros(1,length(EbN0_dB));  % 预置16QAM理论误符号率
% 16QAM调制
send = zeros(1,L_symbol);               % 预设发送信号
send_set = [-3+3j,-1+3j,1+3j,3+3j,...-3+1j,-1+1j,1+1j,3+1j,...-3-1j,-1-1j,1-1j,3-1j,...-3-3j,-1-3j,1-3j,3-3j];     % 发射端星座点
Es_avg = sum(abs(send_set).^2) / length(send_set);
N0 = Es_avg ./ EsN0;
for q = 1:L_symbolif (data(4*q-3:4*q) == [1,0,1,1])send(q) = send_set(1);          % 1001 => -3+3jelseif (data(4*q-3:4*q) == [1,0,0,1])send(q) = send_set(2);          % 1001 => -1+3jelseif (data(4*q-3:4*q) == [1,1,1,0])send(q) = send_set(3);          % 1110 => +1+3jelseif (data(4*q-3:4*q) == [1,1,1,1])send(q) = send_set(4);          % 1111 => +3+3jelseif (data(4*q-3:4*q) == [1,0,1,0])send(q) = send_set(5);          % 1010 => -3+1jelseif (data(4*q-3:4*q) == [1,0,0,0])send(q) = send_set(6);          % 1000 => -1+1jelseif (data(4*q-3:4*q) == [1,1,0,0])send(q) = send_set(7);          % 1100 => +1+1jelseif (data(4*q-3:4*q) == [1,1,0,1])send(q) = send_set(8);          % 1101 => +3+1jelseif (data(4*q-3:4*q) == [0,0,0,1])send(q) = send_set(9);          % 0001 => -3-1jelseif (data(4*q-3:4*q) == [0,0,0,0])send(q) = send_set(10);         % 0000 => -1-1jelseif (data(4*q-3:4*q) == [0,1,0,0])send(q) = send_set(11);         % 0100 => +1-1jelseif (data(4*q-3:4*q) == [0,1,1,0])send(q) = send_set(12);         % 0110 => +3-1jelseif (data(4*q-3:4*q) == [0,0,1,1])send(q) = send_set(13);         % 0011 => -3-3jelseif (data(4*q-3:4*q) == [0,0,1,0])send(q) = send_set(14);         % 0010 => -1-3jelseif (data(4*q-3:4*q) == [0,1,0,1])send(q) = send_set(15);         % 0101 => +1-3jelsesend(q) = send_set(16);         % 0111 => +3-3jend
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;                     % 16QAM仿真误符号率tser_16QAM(q) = 3*qfunc(sqrt(4/5*EbN0(q)))*(1-3/4*qfunc(sqrt(4/5*EbN0(q))));   % 16QAM理论误符号率
end
figure
semilogy(EbN0_dB,ser,'o',EbN0_dB,tser_16QAM,'b');     % 画图
grid on;                                        % 坐标轴开启xlabel('Eb/N0 (dB)');                           % 横坐标
ylabel('SER');                                  % 纵坐标
legend('16QAM仿真误符号率','16QAM理论误符号率');   % 图例

参考:https://blog.csdn.net/HIT_CRC_SKX/article/details/104071271

16QAM-调制解调MATLAB相关推荐

  1. qam已调信号matlab相干解调,16qam调制解调matlab

    (论文)题目 16QAM 的调制与解调 时间: 2012 年 12 月 19 日指导教师 主要研 究内容 基于 MatlabSimulink 的 16QAM 的调制与解调 研究方法 MatlabSim ...

  2. BPSK、QPSK、MPSK、QAM、16QAM的调制解调Matlab实现

    BPSK.QPSK.MPSK.QAM.16QAM的调制解调Matlab实现_ICT_Liang的博客-CSDN博客_matlab qam 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计. ...

  3. 16QAM调制解调系统误码率和星座图的matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 16QAM全称是​正交幅度调制​,英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制,是一 ...

  4. 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计、结果及结论、完整代码及注释)

    16QAM调制解调仿真目录 一.仿真要求 二.仿真方案详细设计 三.仿真结果及结论 四.仿真代码 一.仿真要求 1.用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相 ...

  5. m基于MATLAB Simulink的16QAM调制解调系统仿真

    目录 1.算法概述 2.仿真效果预览 3.MATLAB程序 1.算法概述 16QAM全称正交幅度调制是英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制 ...

  6. 正交调制matlab代码,星形和形星座图调制解调MATLAB代码

    <星形和形星座图调制解调MATLAB代码>由会员分享,可在线阅读,更多相关<星形和形星座图调制解调MATLAB代码(7页珍藏版)>请在人人文库网上搜索. 1. -% 软件无线电 ...

  7. matlab 星座图 qam,16QAM_星形及矩形星座图调制解调MATLAB代码.doc

    完美WORD格式编辑 学习指导参考资料 %% ------------------------------------------------------------ % 软件无线电课程设计 % % ...

  8. fsk调制解调matlab,FSK调制解调MATLAB源代码.docx

    FSK 调制解调 MATLAB 源代码 关键词:FSK 高斯白噪声 调制 眼图 信噪比 function FSK Fc=10; %载频 Fs=40; %系统采样频率 Fd=1; %码速率 N=Fs/F ...

  9. 通信算法之十一:QPSK/DQPSK/OQPSK/BPSK/DBPSK/16QAM调制解调仿真链路

    一. QPSK 正交相移键控 (Quadrature Phase Shift Keying)简称"QPSK",是一种数字调制方式.它分为绝对相移和相对相移两种.由于绝对相移方式存在 ...

  10. matlab ask fsk调制解调,Matlab的ASK-FSK--PSK程序仿真

    <Matlab的ASK-FSK--PSK程序仿真>由会员分享,可在线阅读,更多相关<Matlab的ASK-FSK--PSK程序仿真(12页珍藏版)>请在人人文库网上搜索. 1. ...

最新文章

  1. OpenSSH升级安装步骤(redhat)
  2. 06.正则表达式基本知识
  3. Get Started with Visualforce
  4. 大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图
  5. .NET中颜色的转换方法总结
  6. IDEA MAVEN Project 显示问题
  7. 第三方软件要使用QQ邮箱进行发邮件相关设置
  8. daatable动态创建
  9. c语言判断整数_用c++编写闰年的判断基础程序
  10. Could not resolve host: 'localhost 报错解决办法
  11. “天玑1000Plus”加持iQOO Z1评测:突破价位的极致体验
  12. 浅谈CDQ分治与偏序问题
  13. 阿里巴巴再陷“抄袭门”,究竟孰真孰假?
  14. CentOS6.6部署VNC服务端
  15. 如何检测元素外部的点击?
  16. C#软件工程师必备技能(工业自动化)
  17. 【细胞分割】基于中值滤波+分水岭法实现细胞计数matlab源码
  18. Android原生音量控制
  19. 【IT微小说】CISO琳达的一天
  20. 接入腾讯广告联盟 Android SDK时遇到的坑

热门文章

  1. 华为数通(一):如何使用ssh console telnet来连接设备
  2. 数字图像处理 matlab 报告总结,matlab 数字图像处理实验报告(五份)
  3. 金蝶服务器连接协议,k3金蝶客户端连接服务器配置
  4. 设置win10保护色
  5. chitubox micromake L3+ 切片软件配置对应关系
  6. 房地产管理系统的核心技术与功能
  7. vsto java,从Excel VSTO项目打开WPF应用程序
  8. 国电集团:电子招投标每年节约成本10亿元
  9. 有限差分法及matlab实现,有限差分法与matlab实现
  10. putty怎么进入文件夹_putty命令