matlab对QAM仿真

  • s2_434274
    了解作者
  • 5.4KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-10 02:28
    上传日期
如题。对不同星座图的QAM的通信性能进行模拟仿真。可以得到星座图、概率分布等内容。
matlab_qam_simulation.rar
  • ampmodern.m
    489B
  • randomnumber.m
    1.1KB
  • qamdesign.m
    8.7KB
  • qamdemodern.m
    468B
  • correlator.m
    595B
  • carraygeneration.m
    449B
  • qamtest.m
    2.8KB
  • qamdetect.m
    2.3KB
  • qammodern.m
    642B
内容介绍
% QAM检测设计 % 输入参数 % M: QAM的进制,4,16,64或256 % Esmax: 最大信号能量 % rule: 星座图格式,square,rhombus,circle % 输出参数 % smap: 星座图 % region: 判决区 % prob: 检测概率 function [smap, region, prob] = qamdesign(M, N0, Esmax, rule) % 正方形星座图 if (strcmp(rule, 'square') == 1) || (strcmp(rule, 'rhombus') == 1) edge = sqrt(M); Nmax = edge - 1; su = 2 / Nmax * sqrt(Esmax / 2); N = (2 * (1:edge)) - edge - 1; sedge = N * su / 2; smap = zeros(M, 2); region = zeros(M, 4); for i = 1:edge for j = 1:edge % 星座图 smap((i - 1) * edge + j, :) = [sedge(j), sedge(i)]; % 判决区 if (i == 1) && (j == edge) region((i - 1) * edge + j, :) = [sedge(j) - su / 2, +inf, -inf, sedge(i) + su / 2]; elseif (i == 1) && (j == 1) region((i - 1) * edge + j, :) = [-inf, sedge(j) + su / 2, -inf, sedge(i) + su / 2]; elseif (i == edge) && (j == edge) region((i - 1) * edge + j, :) = [sedge(j) - su / 2, +inf, sedge(i) - su / 2, +inf]; elseif (i == edge) && (j == 1) region((i - 1) * edge + j, :) = [-inf, sedge(j) + su / 2, sedge(i) - su / 2, +inf]; elseif (i == 1) region((i - 1) * edge + j, :) = [sedge(j) - su / 2, sedge(j) + su / 2, -inf, sedge(i) + su / 2]; elseif (i == edge) region((i - 1) * edge + j, :) = [sedge(j) - su / 2, sedge(j) + su / 2, sedge(i) - su / 2, +inf]; elseif (j == 1) region((i - 1) * edge + j, :) = [-inf, sedge(j) + su / 2, sedge(i) - su / 2, sedge(i) + su / 2]; elseif (j == edge) region((i - 1) * edge + j, :) = [sedge(j) - su / 2, +inf, sedge(i) - su / 2, sedge(i) + su / 2]; else region((i - 1) * edge + j, :) = [sedge(j) - su / 2, sedge(j) + su / 2, sedge(i) - su / 2, sedge(i) + su / 2]; end end end % 判决概率 prob = zeros(edge,edge); % for i = 1:edge % for j = 1:edge % syms x1 x2 % prob(i,j) = int( int( ... % 1/(pi*N0)*exp( (-1/N0) * ((x1-smap((i - 1) * edge + j, 1))^2+(x2-smap((i - 1) * edge + j, 2))^2) ), ... % x1, region((i-1)*edge+j,1), region((i-1)*edge+j,2)), x2, region((i-1)*edge+j,3), region((i-1)*edge+j,4)); % end % end % 菱形星座图 if strcmp(rule, 'rhombus') == 1 smap = (1/sqrt(2)) * smap * [1, 1; -1, 1]; % 判决区 region = zeros(M, 4); for i = 1:edge for j = 1:edge if (i == 1) && (j == edge) region((i - 1) * edge + j, :) = [-inf, -smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2), smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), +inf]; elseif (i == 1) && (j == 1) region((i - 1) * edge + j, :) = [-inf, -smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2), -inf, smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2)]; elseif (i == edge) && (j == edge) region((i - 1) * edge + j, :) = [-smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), +inf, smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), +inf]; elseif (i == edge) && (j == 1) region((i - 1) * edge + j, :) = [-smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), +inf, -inf, smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2)]; elseif (i == 1) region((i - 1) * edge + j, :) = [-inf, -smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2), smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2)]; elseif (i == edge) region((i - 1) * edge + j, :) = [-smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), +inf, smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2)]; elseif (j == 1) region((i - 1) * edge + j, :) = [-smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), -smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2), -inf, smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2)]; elseif (j == edge) region((i - 1) * edge + j, :) = [-smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), -smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2), smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), +inf]; else region((i - 1) * edge + j, :) = [-smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), -smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2), smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)-su/sqrt(2), smap((i - 1) * edge + j, 1)+smap((i - 1) * edge + j, 2)+su/sqrt(2)]; end end end end % 圆形星座图 elseif strcmp(rule, 'circle') == 1 smax = sqrt(Esmax); theta = 2 * pi / M; ditect = theta / 2; smap = zeros(M, 2); region = zeros(M, 2); for i = 0:(M - 1) % 星座图 smap(i + 1, :) = [smax * cos(i * theta), smax * sin(i * theta)]; % 判决区 region(i + 1, :) = [(2 * i - 1) * ditect, (2 * i + 1) * ditect]; end % 判决概率 prob = zeros(M,1); % for i = 1:M % syms x1 x2 % prob(i) = 2 * int( int( ... % 1/(pi*N0)*exp( (-1/N0) * ((x1-smap(i, 1))^2+(x2-smap(i, 2))^2) ), ... % x2, 0, x1*tan(ditect)), x1, 0, inf); % end % PAM elseif strcmp(rule, 'PAM') == 1 edge = M; Nmax = edge - 1; su = 2 / Nmax * sqrt(Esmax); N = (2 * (1:edge)) - edge - 1; sedge = N * su / 2; smap = zeros(M, 2); region = zeros(M, 4); i = 1; for j = 1:edge % 星座图 smap((i - 1) * edge + j, :) = [sedge(j), 0]; % 判决区 if (j == 1) region((i - 1) * edge + j, :) = [-inf, sedge(j) + su / 2, -inf, +inf]; elseif (j == edge) region((i - 1) * edge + j, :) = [sedge(j) - su / 2, +inf, -inf, +inf]; else region((i - 1) * edge + j, :) = [sedge(j) - su / 2, sedge(j) + su / 2, -inf, +inf]; end end % 判决概率 prob = zeros(edge,edge); % for i = 1 % for j = 1:edge % syms x1 x2 % prob(i,j) = int( int( ... % 1/(pi*N0)*exp( (-1/N0) * ((x1-smap((i - 1) * edge + j, 1))^2+(x2-smap((i - 1) * edge + j, 2))^2) ), ... % x1, region((i-1)*edge+j,1), region((i-1)*edge+j,2)), x2, region((i-1)*edge+j,3), region((i-1)*edge+j,4)); % end % end elseif strcmp(rule, 'PAM-PSK') == 1 circlenumber = M/4; Nmax = (2 * circlenumber) - 1; smax = sqrt(Esmax); su = smax / circlenumber smap = zeros(M, 2); region = zeros(M, 4); for i = 1:circlenumber for j = 1:4 % 星座图 smap((i - 1) * 4 + j, :) = [i*su*cos(2*pi/4*(j-1)+pi/4*mod(i,2)), i*su*sin(2*pi/4*(
评论
    相关推荐
    • Matlab合集
      冈萨雷斯数字图像处理MATLAB版.中文版+数字图像处理第二版中文版(冈萨雷斯)+MATLAB-R2014a完全自学一本通+MATLAB R2016a完全自学一本通 素材文件+[模式识别与智能计算:MATLAB技术实现(第2版)].杨淑莹.扫描版
    • MATLAB教程
      MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程MATLAB教程
    • MATLAB
      MATLAB 该项目是在matlab上完成的,涉及创建和移动宇宙飞船和机器人。 太空飞船和机器人是使用Matlab中的简单几何形状创建的,并通过连续变换矩阵进行移动。 这个项目教我如何使用变换矩阵(旋转,平移等)的概念...
    • MATLAB基础
      一本学习matlab的一本好书
    • MATLAB编译器
      基于MATLAB 2018b版本介绍MATLAB编译器。介绍如何利用编译器将MATLAB代码编译为独立应用程序或组件,并在没有安装MATLAB的计算机上进行部署。
    • matlabruntime
      通过奇点容器运行您的matlab项目 可以在没有MATLAB的容器中运行matlab代码。 为此,我们首先需要通过Matlab编译器在本地构建相应的Matlab代码的独立应用程序,然后使用具有Matlab运行时( 的容器)运行该应用程序 )...
    • matlab实现
      matlab实现 matlab实现matlab实现matlab实现matlab实现
    • matlab 教程
      matlab 信号处理资料,里面包含信号处理pdf文档,一些杂乱的程序和命令等
    • matlab教程
      matlab教程,PPT格式,包含 matlab基本知识、matlab入门、matlab作图、线性规划、无约束优化、非线性规划、统计工具箱、差值、微分方程等多项知识点,并且每个知识点独立成为PPT,内还含有matlab信号处理详解等文档...
    • matlab简介
      1.MATLAB 开发环境 1.1 MATLAB 的视窗环境 进入MATLAB之后,会看到一个视窗MATLAB Command Window称为指令视窗,它是你键入指令的地方同时 MATLAB也将计算结果显示在此。 1.2 简易计算 我们先从MATLAB的...