16QAM-调制解调MATLAB
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相关推荐
- qam已调信号matlab相干解调,16qam调制解调matlab
(论文)题目 16QAM 的调制与解调 时间: 2012 年 12 月 19 日指导教师 主要研 究内容 基于 MatlabSimulink 的 16QAM 的调制与解调 研究方法 MatlabSim ...
- BPSK、QPSK、MPSK、QAM、16QAM的调制解调Matlab实现
BPSK.QPSK.MPSK.QAM.16QAM的调制解调Matlab实现_ICT_Liang的博客-CSDN博客_matlab qam 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计. ...
- 16QAM调制解调系统误码率和星座图的matlab仿真
目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 16QAM全称是正交幅度调制,英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制,是一 ...
- 16QAM调制解调仿真(matlab,详细介绍仿真方案的设计、结果及结论、完整代码及注释)
16QAM调制解调仿真目录 一.仿真要求 二.仿真方案详细设计 三.仿真结果及结论 四.仿真代码 一.仿真要求 1.用基带等效的方式仿真16-QAM在AWGN信道下的误码率和误比特率性能,并与理论值相 ...
- m基于MATLAB Simulink的16QAM调制解调系统仿真
目录 1.算法概述 2.仿真效果预览 3.MATLAB程序 1.算法概述 16QAM全称正交幅度调制是英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制 ...
- 正交调制matlab代码,星形和形星座图调制解调MATLAB代码
<星形和形星座图调制解调MATLAB代码>由会员分享,可在线阅读,更多相关<星形和形星座图调制解调MATLAB代码(7页珍藏版)>请在人人文库网上搜索. 1. -% 软件无线电 ...
- matlab 星座图 qam,16QAM_星形及矩形星座图调制解调MATLAB代码.doc
完美WORD格式编辑 学习指导参考资料 %% ------------------------------------------------------------ % 软件无线电课程设计 % % ...
- fsk调制解调matlab,FSK调制解调MATLAB源代码.docx
FSK 调制解调 MATLAB 源代码 关键词:FSK 高斯白噪声 调制 眼图 信噪比 function FSK Fc=10; %载频 Fs=40; %系统采样频率 Fd=1; %码速率 N=Fs/F ...
- 通信算法之十一:QPSK/DQPSK/OQPSK/BPSK/DBPSK/16QAM调制解调仿真链路
一. QPSK 正交相移键控 (Quadrature Phase Shift Keying)简称"QPSK",是一种数字调制方式.它分为绝对相移和相对相移两种.由于绝对相移方式存在 ...
- matlab ask fsk调制解调,Matlab的ASK-FSK--PSK程序仿真
<Matlab的ASK-FSK--PSK程序仿真>由会员分享,可在线阅读,更多相关<Matlab的ASK-FSK--PSK程序仿真(12页珍藏版)>请在人人文库网上搜索. 1. ...
最新文章
- OpenSSH升级安装步骤(redhat)
- 06.正则表达式基本知识
- Get Started with Visualforce
- 大数据实时计算工程师/Hadoop工程师/数据分析师职业路线图
- .NET中颜色的转换方法总结
- IDEA MAVEN Project 显示问题
- 第三方软件要使用QQ邮箱进行发邮件相关设置
- daatable动态创建
- c语言判断整数_用c++编写闰年的判断基础程序
- Could not resolve host: 'localhost 报错解决办法
- “天玑1000Plus”加持iQOO Z1评测:突破价位的极致体验
- 浅谈CDQ分治与偏序问题
- 阿里巴巴再陷“抄袭门”,究竟孰真孰假?
- CentOS6.6部署VNC服务端
- 如何检测元素外部的点击?
- C#软件工程师必备技能(工业自动化)
- 【细胞分割】基于中值滤波+分水岭法实现细胞计数matlab源码
- Android原生音量控制
- 【IT微小说】CISO琳达的一天
- 接入腾讯广告联盟 Android SDK时遇到的坑
热门文章
- 华为数通(一):如何使用ssh console telnet来连接设备
- 数字图像处理 matlab 报告总结,matlab 数字图像处理实验报告(五份)
- 金蝶服务器连接协议,k3金蝶客户端连接服务器配置
- 设置win10保护色
- chitubox micromake L3+ 切片软件配置对应关系
- 房地产管理系统的核心技术与功能
- vsto java,从Excel VSTO项目打开WPF应用程序
- 国电集团:电子招投标每年节约成本10亿元
- 有限差分法及matlab实现,有限差分法与matlab实现
- putty怎么进入文件夹_putty命令