利用matlab实现16QAM调制

2020-12-22

一、随机信号的调制第一个示例描述以下问题: 下表描述了解决此问题的关键任务和相应的通信工具箱函数,其中选择基带16QAM作为调制制式以及加性高斯白噪声(AWGN)作为信道模型。问题解决方案:1.产生随机二进制数据序列。在MATLAB中表示信号的常规格式是向量或者矩阵。本示例中利用randint 函数来产生一个表示二进制数据序列连续值的列向量。其中二进制数据序列的长度(即为列向量中的行数)设置为30,000。下面的代码同时还绘制了数据序列的杆图(stem plot),用来显示数据的0、1值。你所产生的图可能与次示例中的图有一点不一样,这是因为本示例中应用了随机数。%% Setup% Define parameters.M = 16; % Size of signal constellationk = log2(M); % Number of bits per symboln = 3e4; % Number of bits to processnsamp = 1; % Oversampling rate%% Signal Source% Create a binary data stream as a column vector.x = randint(n,1); % Random binary data stream% Plot first 40 bits in a stem plot.stem(x(1:40),"filled");title("Random Bits");xlabel("Bit Index"); ylabel("Binary Value");2、准备调制modem.qammod对象实现M-QAM调制器,本示例中M为16。其输入参数是从0到15的整数而不是4bits二进制数据。因此,在利用此对象的modulate方法之前需要对二进制数据序列x进行预处理。特别地, 先采用MATLAB中的reshape函数将x沿着矩阵的行方向重新整理成每行4bit数据,然后应用bi2de函数将4bit数据转换成相应的整数。%% Bit-to-Symbol Mapping% Convert the bits in x into k-bit symbols.xsym = bi2de(reshape(x,k,length(x)/k).","left-msb");%% Stem Plot of Symbols% Plot first 10 symbols in a stem plot.figure; % Create new figure window.stem(xsym(1:10));title("Random Symbols");xlabel("Symbol Index"); ylabel("Integer Value"); 问题 利用一个由基带调制器、信道和解调器组成的通信系统处理二进制数据流。计算系统的误码率(BER)并显示发射和接收信号的散点图(Scatter Plot)。 任务函数或方法产生随机二进制数据序列randint16QAM调制modem.qammod 对象中的modulate方法AWGN信道awgn绘制散点图scatterplot16QAM解调modem.qamdemod 对象中的demodulate方法(原文档有误)计算系统误码率biterr3、16-QAM调制.对于已定义的包含从0到15的整数的列向量xsym,就可以利用modem.qammod对象的modulate方法来调制它。其中M值为16,亦即为码字表的大小。%% Modulationy = modulate(modem.qammod(M),xsym); % Modulate using 16-QAM.调制的结果是复数列向量,其取值为16点QAM信号星座图。本示例中的随后步骤中将会展示星座图是什么样子的。想要了解更多关于调制函数的信息,可参见第8章“调制”。另外,注意到modem.qammod对象的modulate方法没有进行任何的脉冲成形处理。4、加性高斯白噪声.对已调制信号可采用awgn函数添加加性高斯噪声。其中比特能量与噪声功率谱密度的比值,Eb/N0,设置为10dB。将上述Eb/N0值转换为相应的信噪比(SNR),需要考虑每一符号包含的比特数k(16-QAM中为4)以及过采样率因子nsamp(本示例中为1)。其中因子k是用来将Eb/N0转换为等价的Es/N0(符号能量与噪声功率谱密度的比值)。因子nsamp是用来将符号速率带宽内的Es/N0转换为采样带宽内的SNR。说明 ytx和yrx的定义以及snr定义中nsamp项到目前为止在本示例中显现得并不是很重要, 但是这将使得其更容易扩展到之后的成形滤波示例。  %% Transmitted Signalytx = y;%% Channel% Send signal over an AWGN channel.EbNo = 10; % In dBsnr = EbNo + 10*log10(k) - 10*log10(nsamp);ynoisy = awgn(ytx,snr,"measured");%% Received Signalyrx = ynoisy;5、绘制散点图。对发射和接收信号利用scatterplot函数可显示信号星座图的样子及噪声对信号造成的失真程度。在该图中,横轴代表了信号的同相分量而纵轴代表了正交分量。下面的代码还利用了MATLAB中的title、legend以及axis函数来绘制特定的图像。%% Scatter Plot% Create scatter plot of noisy signal and transmitted% signal on the same axes.h = scatterplot(yrx(1:nsamp*5e3),nsamp,0,"g.");hold on;scatterplot(ytx(1:5e3),1,0,"k*",h);title("Received Signal");legend("Received Signal","Signal Constellation");axis([-5 5 -5 5]); % Set axis ranges.hold off;6、16-QAM解调。对接收信号利用modem.deqammod对象的demodulate方法进行解调。解调结果为包含0到15之间整数的列向量。%% Demodulation% Demodulate signal using 16-QAM.zsym = demodulate(modem.qamdemod(M),yrx);7、整数信号转换至二进制比特信号.%% Symbol-to-Bit Mapping% Undo the bit-to-symbol mapping performed earlier.z = de2bi(zsym,"left-msb"); % Convert integers to bits.% Convert z from a matrix to a vector.z = reshape(z.",prod(size(z)),1);8、计算系统误码率.对原始二进制向量和上述步骤解调得到二进制向量利用biterr函数即可得到误比特数和误码率。%% BER Computation% Compare x and z to obtain the number of errors and% the bit error rate.[number_of_errors,bit_error_rate] = biterr(x,z)>>number_of_errors =71bit_error_rate =0.0024 上一步产生的信号为一整数列向量zsym。要得到相应的二进制比特信号,只需要利用de2bi函数将每一个整数转化为相应的4位二进制信号。然后利用reshape函数将一个4列的矩阵整理为一个单独列向量

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://image95.pinlue.com/image/28.jpg

matlab的qammod函数_利用matlab实现16QAM调制相关推荐

  1. matlab相关性分析频谱_利用matlab怎样进行频谱分析、、

    利用 matlab 怎样进行频谱分析 图像的频率是表征图像中灰度变化剧烈程度的指标, 是灰度在平面空间上的 梯度. 如: 大面积的沙漠在图像中是一片灰度变化缓慢的区域, 对应的频率值很 低:而对于地表 ...

  2. matlab文件名加前缀_利用MATLAB批量对文件重命名

    利用MATLAB批量对文件重命名 tags: - MATLAB - 科研软件 序 没paper,实验肯定要做啊,不做就毕不了业 . 编程这方面,编程是不可能编程的,这辈子不可能编程的 . paper又 ...

  3. matlab相关性分析频谱_利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]

    <利用Matlab绘制正弦信号的频谱图并做相关分析[共6页]>由会员分享,可在线阅读,更多相关<利用Matlab绘制正弦信号的频谱图并做相关分析[共6页](6页珍藏版)>请在人 ...

  4. matlab低通滤波器库函数代码_利用Matlab filterDesigner 工具生成FIR滤波器函数,并调用实现低通滤波...

    本文使用的开发环境为:Win10 Matlab2018a 版本. 在matlab命令窗口输入:filterDesigner命令,即可打开filterDesigner设计工具. 按照下图调整FIR低通滤 ...

  5. matlab计算斜方差_利用matlab进行协方差运算

    本文全部参考自: http://www.cnblogs.com/welen/articles/5535042.html#undefined 知识点一: MATLAB中四个取整函数具体使用方法如下: M ...

  6. matlab中ss函数_[转载]matlab ss函数 tf函数

    ss 指定状态空间模型或者将线性时不变系统转成状态空间 语法 ss sys = ss(a,b,c,d) sys = ss(a,b,c,d,Ts) sys = ss(d) sys = ss(a,b,c, ...

  7. matlab 统计数组频数_利用MATLAB进行频率分析(统计数组中元素个数)

    在日常计算,工作中使用MATLAB经常会遇到这样的一个问题:如何统计数组中各数字(元素)出现的频数.频率和累积频率?本文就按照案例演示的方式做一个总结. 第一种方法:调用MATLAB自带的函数tabu ...

  8. matlab 频谱图例子_利用matlab怎样进行频谱分析

    图像的频率是表征图像中灰度变化剧烈程度的指标,是灰度在平面空间上的梯度.如:大面积的沙漠在图像中是一片灰度变化缓慢的区域,对应的频率值很低:而对于地表属性变换剧烈的边缘区域在图像中是一片灰度变化剧烈的 ...

  9. matlab均值量化函数_在matlab中理解抽样量化的概念:均匀量化的实现

    还是一样,先贴程序 %sampling and quantisation clc; clear; %sampling A = 1; % sinusoid's amplitude f = 2;% fre ...

最新文章

  1. composer更新_深入学习Composer原理(四)
  2. eclipse编译java项目class文件_动态编译 Java 代码以及生成 Jar 文件
  3. 【 HDU - 1215 】七夕节(数论,约数和公式)
  4. 论文浅尝 | 通过知识到文本的转换进行知识增强的常识问答
  5. Leetcode--229. 求众数Ⅱ
  6. eclipse如何开发python
  7. 转:关于Apache与Nginx的优势比较(经典)
  8. 微软Windows2003的正版安装序列号
  9. hdu1133-----递推+大数
  10. ApexPages.StandardSetController基本用处
  11. bgp 建立邻居发送的报文_HCIE笔记-------BGP邻居状态详解
  12. mysql数据库原理设计与应用在线pdf_MySQL数据库原理、设计与应用
  13. 计算机软件购销合同模版,软件销售合同范本
  14. Neo4j登录报错Neo4j Server shutdown initiated by request解决
  15. RGB颜色空间、色调、饱和度、亮度、HSV颜色空间详解
  16. dango shell 操作crud
  17. 1小时1篇文学会用python进行AI修复!
  18. JavaScript如何判定一个给定的时间区间在哪些时间段范围内?
  19. 送书 | 《Django项目开发实战》
  20. 统一调度平台V2.0

热门文章

  1. 【EMC电磁兼容】01.01——缘由及认证
  2. 现代IM系统中的消息系统架构 - 架构篇
  3. 相约科技盛宴 | 极客天成在云栖大会等你
  4. 用python画简单的猴子画法_简笔画猴子画法的图片简单的教程
  5. steam客户端打不开_如何在Steam客户端中启用家庭选项(又称父母控制)
  6. Uart串口receive端实现
  7. 港人首次置业项目逾80%申请者属“80后、90后”
  8. Android - 震动反馈和提示音实现
  9. 二叉树排序——c语言实现
  10. Python爬虫入门,常用爬虫技巧盘点