基于MATLAB的数字频带通信系统的仿真 - 图文

更新时间:2024-03-02 13:00:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

北京邮电大学世纪学院

毕业设计(论文)

题 目 基于MATLAB的数字频带通信系统仿真

学 号 00000000 学生姓名 通信工 专业名称 通信工 所在系(院) 通信与信息工程 指导教师 通信工

2012年 6 月 1 日

北京邮电大学世纪学院毕业设计(论文)任务书

姓名 学号 专业 通信工程 系(院) 通信与信息工程 设计(论文)题目 题目分类 题目来源 基于MATLAB的数字频带通信系统仿真 □ 工程设计;□ 工程技术研究;□ 软件工程(如CAI课题等);■ 专题研究;□艺术设计;□ 其他 □ 自然科学基金与部、省、市级以上科研课题;□ 企、事业单位委托课题; □ 院级课题; ■ 自拟课题 □ 其他 职 称 教授 讲师 助教 教授 工作单位 通信与信息工程系 通信与信息工程系 通信与信息工程系 通信与信息工程系 备注 组长 指导教师 成员 成员 指导教师(指导教师组 组长及成员姓名) 程 韧 李 殷 游 思 晴 张 茹 毕业设计(论文)的内容和要求: [注意:选题尽量与实际应用需求相结合。要求写明本设计(论文)所涉及的分析方法或技术手段(如定性、定量分析的方法);要求有独立的见解,设计内容要详细写明具体步骤和技术指标]。 数字频带传输系统是把数字基带信号经过调制后送往信道传输的通信系统。数字频带通信系统的基本结构由发送滤波器、调制器、信道、解调器、接收滤波器等部分构成。研究数字频带通信系统是研究数字通信的基础,现代大多数数字通信系统都是频带通信系统。所以研究数字频带通信系统并用软件仿真,具有现实意义。 本论文要求在分析数字频带传输基本原理的基础上,设计信道带宽受限且具有高斯白噪声的最佳数字频带通信系统,理论分析其性能,并用程序仿真验证分析结果。

应完成的工作和提交材料要求(课题完成后应提交成果的种类、数量、质量等方面的要求): ① 开题报告:3000字左右; ② 论文的中文摘要:200-300字左右,包含关键词,并译成英文。英文摘要以250个左右实词为宜; ③ 论文正文不少于15000字; ④ 尽量结合课题,翻译1500汉字以上的有关技术资料或专业文献; ⑤ 参考文献中,主要的文献应达到10篇以上,其中外文文献在2篇以上。 主要参考文献(参考文献不少于4篇,参考文献目录按GB/T7714—2005的要求填写): [1] 樊昌信,詹道庸,徐炳祥,吴成柯.通信原理[M].北京:国防工业出版社,1980:171~260 [2] 薛鹏骞.电子与通信电路计算机仿真[M].北京:煤炭工业出版社,2003:113~144 [3] 邓华.MATLAB通信仿真及应用实例详解[M].北京:人民邮电出版社,2003:99~115 [4] 张谦.通信系统中MATLAB基础与仿真应用[M].西安:西安电子科技大学出版社,2010:85~109 毕业设计(论文)进度计划(从正式启动时间开始,以周为单位填写): 第1周-第2周 课题调研、查资料、撰写开题报告。 第3周 根据查询的资料确定总体设计思路,完成开题报告并上交。 第4周-第7周 毕业设计单元部分研究,并设计出整体框架。 第8周 完成论文中期检查报告。 第9周-第15周 资料整理,撰写毕业论文;上交毕业设计论文,指导教师审查评阅设计报告,业设计答辩资格审查。毕业设计答辩,学生修改毕业设计论文,准备答辩。 第16周 进行毕设答辩。 指导教师签字: 日期: 年 月 日 教学单位意见 审核人签字: 系(院)(盖章) 年 月 日 务完成后附在论文内;

2、凡审核不通过的任务书,请重新申报。

学 院 意 见 审核专家签字: 年 月 日 备注1、由指导教师撰写,可根据长度加页,一式三份,教务处、系(院)各留存一份,发给学生一份,任

北京邮电大学世纪学院

毕业设计(论文)诚信声明

本人声明所呈交的毕业设计(论文),题目《基于MATLAB的数字频带通信系统仿真》是本人在指导教师的指导下,独立进行研究工作所取得的成果,除了文中特别加以标注和致谢中所罗列的内容以外,毕业设计(论文)中不包含其他人已经发表或撰写过的研究成果,也不包含为获得北京邮电大学或其他教育机构的学位或证书而使用过的材料。

申请学位论文与资料若有不实之处,本人承担一切相关责任。

本人签名: 日期:

毕业设计(论文)使用权的说明

本人完全了解北京邮电大学世纪学院有关保管、使用论文的规定,其中包括:①学校有权保管、并向有关部门送交学位论文的原件与复印件;②学校可以采用影印、缩印或其它复制手段复制并保存论文;③学校可允许论文被查阅或借阅;④学校可以学术交流为目的,复制赠送和交换学位论文;⑤学校可以公布学位论文的全部或部分内容。

本人签名: 日期: 指导教师签名: 日期:

题目 基于MATLAB的数字频带通信系统仿真

摘要

本论文研究了数字频带传输的性能。围绕基本结构发送滤波器、调制器、信道、解调器、接收滤波器等部分进行仿真。在分析数字频带传输基本原理的基础上,从两方面理论分析其传输系统的基本性能。

第一个方面使用MATLAB中M语言完成QPSK的仿真,得出在加性高斯白噪声的信道下,传输比特错误率,得出关系曲线,并将比特错误率与理论值相比较,分析其传输性能。

第二个方面是通过仿真得到QPSK和OQPSK信号经过带通后的波形。对比两个信号的功率谱密度图,理论分析其传输性能。

关键词 仿真 MATLAB QPSK OQPSK

I

北京邮电大学世纪学院毕业设计(论文)

2.MATLAB简介

MATLAB是Matrix Laboratory的缩写,是一款由美国Math Works公司出品的商业数学软件。MATLAB 是一种用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境。除了矩阵运算、绘制函数/数据图像等常用功能外,MATLAB还可以用来创建用户界面及与调用其它语言(包括C,C++和FORTRAN)编写的程序。

尽管MATLAB主要用于数值运算,但利用为数众多的附加工具箱(Toolbox)它也适合不同领域的应用,例如控制系统设计与分析、图像处理、信号处理与通讯、金融建模和分析等。

2.1 MATLAB的主要功能

可用于技术计算的高级语言;

可对代码、文件和数据进行管理的开发环境;

可以按迭代的方式探查、设计及求解问题的交互式工具;

可用于线性代数、统计、傅立叶分析、筛选、优化以及数值积分等的数学函数; 可用于可视化数据的二维和三维图形函数; 可用于构建自定义的图形用户界面的各种工具;

可将基于 MATLAB 的算法与外部应用程序和语言(如 C、C++、Fortran、Java、COM 以及 Microsoft Excel)集成的各种函数。

2.2 MATLAB的优势

1.友好的工作平台和编程环境

MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

4

北京邮电大学世纪学院毕业设计(论文)

2.简单易用的程序语言

MATLAB一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

3.强大的科学计算机数据处理能力

MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而前经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

4.出色的图形处理功能

MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

5.应用广泛的模块集合工具箱

5

北京邮电大学世纪学院毕业设计(论文)

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。目前,MATLAB已经把工具箱延伸到了科学研究和工程应用的诸多领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

6.实用的程序接口和发布平台

新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。

7.应用软件开发(包括用户界面)

在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。

2.3 MATLAB工具箱

MATLAB的一个重要特点是可扩展性。作为Simulink和其它所有Math Works产品的基础,MATLAB可以通过附加的工具箱(Toolbox)进行功能扩展,每一个工具箱就是实现特定功能的函数的集合。Math Works提供的工具箱分以下几大类:

数学和优化; 统计和数据分析; 控制系统设计和分析; 信号处理和通讯; 图像处理;

6

北京邮电大学世纪学院毕业设计(论文)

测试和测量; 金融建模和分析; 应用程序部署; 数据库连接和报表; 分布式计算;

这些工具箱大多是用开放式的MATLAB语言写成,用户不但可以查看源代码,还可以可根据自己的需要进行修改以及创建自定义函数。此外,常有用户在MATLAB Central:File Exchange发布自己编写的MATLAB程序或工具箱,供他人自由下载使用。

2.4 MATLAB语言

MATLAB语言是一种交互性的数学脚本语言,其语法与C/C++类似。它支持包括逻辑(logic)、数值(numeric)、文本(text)、函数柄(function handle)和异质数据容器(heterogeneous container)在内的15种数据类型,每一种类型都定义为矩阵或阵列的形式(0维至任意高维)。

执行MATLAB代码的最简单方式是在MATLAB程序的命令窗口(Command Window)的提示符处输入代码,MATLAB会即时返回操作结果(如果有的话)。此时, MATLAB可以看作是一个交互式的数学终端,简单来说,一个功能强大的“计算器”。MATLAB代码同样可以保存在一个以.m为后缀名的文本文件中,然后在命令窗口或其它函数中直接调用。

7

北京邮电大学世纪学院毕业设计(论文)

3.通信系统

在当今高度信息化的社会,信息和通信已成为现代社会的“命脉”。信息的交流主要依赖于计算机通信,而通信作为传输手段,与传感技术、计算机技术相互融合,已成为21世纪国际社会和世界经济发展的强大动力。为了适应时代的要求,新的一代移动通信技术应时而生,新的一代移动通信技术即人们称之第三代的核心特征是宽带寻址接入到固定网和众多不同通信系统间的无隙缝漫游,获取多媒体通信业务。

随着时代的进步、科技的创新、人们的生活要求的提高,移动通信技术更新换代速度相当惊人,差不多每隔十年移动通信技术就发生一次变革性换代,从上个世纪80年代的“大哥大”到现在的3G手机,其间发生了两次移动通信技术的变革,从1G的AMPS过渡到2G的GSM,从GSM到IMT-2000(即3G技术)。就我所知现代的移动通信技术有以下几方面的重要技术:

1.宽带调制和多址技术

无线高速数据传输不能一味仅靠频谱的扩展,应在频谱效率上至少高于目前一个数量级,可在物理层采用三项技术,即OFDM、UWB和空时调制编码。OFDM与其他编码方式的结合,灵活把OFDM与TDMA、FDMA、CDMA、SDMA组合成多址技术。

2.频谱利用率提升技术

理论研究指出:在独立瑞利散射信道中,数据速率与天线数成线性关系,容量可达Shannon的90%。在发射和接收端以多天线开发信道空间可取得容量和频谱效率的增益。MIMO技术主要包括空间复用和空间分集技术,在独立信道上并发或连发相同信息来提高传输可靠性。

3.软件无线电技术

软件无线电技术是在硬件平台上通过软件编辑以一个终端实施不同系统中多种通信业务。它用数字信号处理语言描述电信元件,以软件程序下载成数字信号处理硬件。以具有通用开放无线结构,兼容多种模式在多种技术标准之间无缝切换。

UWB也称为脉冲无线电,调制采用脉冲宽度在纳秒级的快速上升和下降脉冲,脉冲覆盖的频谱从直流至吉赫兹,不需常规窄带调制所需的射频上变换,脉冲成型后可直接送至天线发射。

4.软件无线电技术

8

北京邮电大学世纪学院毕业设计(论文)

致谢

首先,我要感谢北京邮电大学世纪学院给我提供这么一个实践的机会,为我们在校本科生提供如图书馆之类的各种学习场所,及可以完成实践的学习工作条件。

其次,要衷心感谢通信工老师在我大学的最后学习阶段给予我的指导,从最初定题,到收集资料,写作,修改,定稿,她给了我耐心的指导和无私的帮助。使我能够在短时间内有很大的进步,顺利完成毕业设计的各项工作。对于一名本科生来说,这是难得的锻炼机会,我从中受益匪浅。

感谢在大学四年中所有关心我的任课老师,同学和朋友们,感谢我的父母,因为有他们的支持,我才能不断向前迈进。

29

北京邮电大学世纪学院毕业设计(论文)

参考文献

[1] 樊昌信,詹道庸,徐炳祥,吴成柯.通信原理[M].北京:国防工业出版社,

1980:171~260.

[2] 薛鹏骞.电子与通信电路计算机仿真[M].北京:煤炭工业出版社,2003:

113~144.

[3] 邓华.MATLAB通信仿真及应用实例详解[M].北京:人民邮电出版社,2003:

99~115.

[4] 陈怀琛.MATLAB及其在理工课程中的应用指南[M].西安:西安电子科技大学

出版社,2002:146~180.

[5] 张谦.通信系统中MATLAB基础与仿真应用[M].西安:西安电子科技大学出版

社,2010:85~109.

[6] 孙屹.MATLAB通信仿真开发手册[M].北京:国防工业出版社,2005:138~168. [7] 王立宁,乐光新,詹菲.MATLAB与通信仿真[M].北京:人民邮电出版社,2000:

74~86.

[8] 约翰·G·普罗克斯.现代通信系统的使用MATLAB[M].西安:西安交通学出版

社,2001:95~121.

[9] 陈萍.现代通信实验系统的计算机仿真[M].北京:国防工业出版社,2003:

171~260.

[10] 孙亮.MATLAB语言与控制系统仿真[M].北京:北京工业大学出版社,2001:

64~83.

[11] William A Shay.Understanding Data Communications and Networks[M]:

Wadsworth Publishing Company,1998:162~164.

[12] William Stallings.Data and Computer Communications,Seventh Edition[M]:

Prentice Hall,2003:201~207.

30

北京邮电大学世纪学院毕业设计(论文)

附录

MATLAB仿真程序: 一.QPSK仿真

clear;

T=1; fc=10/T; ml=2; nb=100;

delta_T=T/200; fs=1/delta_T; SNR=0;

t=0:delta_T:nb*T-delta_T; N=length(t);

data=randn(1,nb)>0.5; datanrz=data.*2-1;

data1=zeros(1,nb/delta_T); for q=1:nb

data1((q-1)/delta_T+1:q/delta_T)=datanrz(q); end

% 将基带信号变换成对应波形信号 data0=zeros(1,nb/delta_T); for q=1:nb

data0((q-1)/delta_T+1:q/delta_T)=data(q); % end

% 发射的信号

data2=abs(fft(data1));

% 串并转换,将奇偶位数据分开 idata=datanrz(1:ml:(nb-1)); qdata=datanrz(2:ml:nb); % QPSK信号的调制

ich=zeros(1,nb/delta_T/2); for i=1:nb/2

ich((i-1)/delta_T+1:i/delta_T)=idata(i); end

for ii=1:N/2

a(ii)=sqrt(2/T)*cos(2*pi*fc*t(ii)); end

31

北京邮电大学世纪学院毕业设计(论文)

idata1=ich.*a; qch=zeros(1,nb/2/delta_T); for j1=1:nb/2

qch((j1-1)/delta_T+1:j1/delta_T)=qdata(j1); end

for jj=1:N/2

b(jj)=sqrt(2/T)*sin(2*pi*fc*t(jj)); end

qdata1=qch.*b;

s=idata1+qdata1; ss=abs(fft(s));

% 瑞利衰落信道

ray_ich=raylrnd(0.8,1,nb/2/delta_T); ray_qch=raylrnd(0.8,1,nb/2/delta_T); Ray_idata=idata1.*ray_ich; Ray_qdata=qdata1.*ray_qch; Ray_s=Ray_idata+Ray_qdata;

%%%%%%%%%%%%%%%%%%%%%%%%%% % 高斯信道

s1=awgn(s,SNR); % 通过高斯信道之后的信号

s11=abs(fft(s1)); % 快速傅里叶变换得到频谱 s111=s1-s; % 高斯噪声曲线 %%%%%%%%%%%%%%%%%%%%%%%%%%

Awgn_s=awgn(Ray_s,SNR); % 通过高斯信道再通过瑞利衰落信道 % QPSK 解调部分

% 解调部分(高斯信道)

idata2=s1.*a; % 这里面其实隐藏了一个串并转换的过程 qdata2=s1.*b; % 对应的信号与正余弦信号相乘

idata3=zeros(1,nb/2); % 建立1*nb数组,以存放解调之后的信号 qdata3=zeros(1,nb/2);

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 for n=1:nb/2

% A1(n)=sum(idata2((n-1)/delta_T+1:n/delta_T)); if sum(idata2((n-1)/delta_T+1:n/delta_T))>=0 idata3(n)=1;

else idata3(n)=0; end

% A2(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T)); if sum(qdata2((n-1)/delta_T+1:n/delta_T))>=0

32

北京邮电大学世纪学院毕业设计(论文)

qdata3(n)=1; else qdata3(n)=0; end end

% 为了显示星座图,将信号进行处理 idata4=zeros(1,nb/2); qdata4=zeros(1,nb/2); for n=1:nb/2

Awgn_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_ichsum(n)>=0 idata4(n)=1; else idata4(n)=0; end

Awgn_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Awgn_qchsum(n)>=0 qdata4(n)=1; else qdata4(n)=0; end end

% 将判决之后的数据存放进数组 demodata=zeros(1,nb);

demodata(1:ml:(nb-1))=idata3; % 存放奇数位 demodata(2:ml:nb)=qdata3; % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平) demodata1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

demodata1((q-1)/delta_T+1:q/delta_T)=demodata(q); % 将极性码变成对应的波形信号 end

% 累计误码数

% abs(demodata-data)求接收端和发射端

% 数据差的绝对值,累计之后就是误码个数 Awgn_num_BER=sum(abs(demodata-data))

%%%%%%%%%%%%%%%%%%% % 解调部分(瑞利+高斯)

Ray_idata2=Ray_s.*a; Ray_qdata2=Ray_s.*b;

% Ray_idata3=zeros(1,nb/2); % Ray_qdata3=zeros(1,nb/2);

33

北京邮电大学世纪学院毕业设计(论文)

% 抽样判决的过程,与0作比较,data>=0,则置1,否则置0 % for n=1:nb/2

% if Ray_sum(Ray_idata2((n-1)/delta_T+1:n/delta_T))>=0 % Ray_idata3(n)=1;

% else Ray_idata3(n)=0; % end

% if Ray_sum(Ray_qdata2((n-1)/delta_T+1:n/delta_T))>=0 % Ray_qdata3(n)=1; % else Ray_qdata3(n)=0; % end % end

% 为了显示星座图,将信号进行处理 Ray_idata4=zeros(1,nb/2); Ray_qdata4=zeros(1,nb/2); for n=1:nb/2

Ray_ichsum(n)=sum(idata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Ray_ichsum(n)>=0 Ray_idata4(n)=1; else Ray_idata4(n)=0; end

Ray_qchsum(n)=sum(qdata2((n-1)/delta_T+1:n/delta_T))*delta_T; if Ray_qchsum(n)>=0 Ray_qdata4(n)=1; else Ray_qdata4(n)=0; end end

% 将判决之后的数据存放进数组 Ray_demodata=zeros(1,nb);

Ray_demodata(1:ml:(nb-1))=Ray_idata4; % 存放奇数位 Ray_demodata(2:ml:nb)=Ray_qdata4; % 存放偶数位

%为了显示,将它变成波形信号(即传输一个1代表单位宽度的高电平) Ray_demodata1=zeros(1,nb/delta_T); % 创建一个1*nb/delta_T的零矩阵 for q=1:nb

Ray_demodata1((q-1)/delta_T+1:q/delta_T)=Ray_demodata(q); % 将极性码变成对应的波形信号 end

% 累计误码数

% abs(demodata-data)求接收端和发射端

% 数据差的绝对值,累计之后就是误码个数 Ray_num_BER=sum(abs(Ray_demodata-data))

34

北京邮电大学世纪学院毕业设计(论文)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% 误码率计算

%% 调用了cm_sm32();和cm_sm33()函数 %%声明: 函数声明在另外俩个M文件中

%%作用: cm_sm32()用于瑞利信道误码率的计算 %% cm_sm33()用于高斯信道误码率的计算 %% ecoh on/off 作用在于决定是否显示指令内容

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SNRindB1=0:1:8; SNRindB2=0:0.1:8; % 瑞利衰落信道

for i=1:length(SNRindB1),

[pb,ps]=cm_sm32(SNRindB1(i)); % 比特误码率 smld_bit_ray_err_prb(i)=pb; smld_symbol_ray_err_prb(i)=ps; disp([ps,pb]); echo off; end;

% 高斯信道 echo on;

for i=1:length(SNRindB1),

[pb1,ps1]=cm_sm33(SNRindB1(i)); smld_bit_awgn_err_prb(i)=pb1; smld_symbol_awgn_err_prb(i)=ps1; disp([ps1,pb1]); echo off; end;

% 理论曲线 echo on;

for i=1:length(SNRindB2),

SNR=exp(SNRindB2(i)*log(10)/10); % 信噪比

theo_err_awgn_prb(i)=0.5*erfc(sqrt(SNR)); % 高斯噪声理论误码率 theo_err_ray_prb(i)=0.5*(1-1/sqrt(1+1/SNR)); % 瑞利衰落信道理论误码率 echo off; end;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

h = spectrum.welch; % 类似于C语言的宏定义,方便以下的调用 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 第一部分(理想)

35

北京邮电大学世纪学院毕业设计(论文)

figure(1) subplot(212);

psd(h,data0,'fs',fs),title('基带信号功率谱密度'); subplot(211);

plot(data0),title('基带信号'); axis([0 20000 -2 2]);

figure(2) subplot(212);

psd(h,s,'fs',fs),title('调制信号功率谱密度'); subplot(211);

plot(s),title('调制信号'); axis([0 500 -3 3]);

figure(3) subplot(212);

psd(h,demodata1,'fs',fs),title('解调输出功率谱密度'); subplot(211);

plot(demodata1),title('解调输出'); axis([0 20000 -2 2]);

figure(4) subplot(313);

psd(h,s1,'fs',fs),title('调制信号功率谱密度(Awgn)'); subplot(312);

plot(s1),title('调制信号(Awgn)'); axis([0 500 -5 5]); subplot(311);

plot(s111),title('高斯噪声曲线'); axis([0 2000 -5 5]);

figure(5) for i=1:nb/2

plot(idata(i),qdata(i),'r+'),title('QPSK信号星座图(Awgn)');hold on; legend('理论值(发射端)','实际值(接收端)'); axis([-2 2 -2 2]);

plot(Awgn_ichsum(i),Awgn_qchsum(i),'*');hold on; end

figure(6) subplot(111)

36

北京邮电大学世纪学院毕业设计(论文)

semilogy(SNRindB2,theo_err_awgn_prb,'r'),title('误码率曲线');hold on; semilogy(SNRindB1,smld_bit_awgn_err_prb,'r*');hold on; semilogy(SNRindB2,theo_err_ray_prb);hold on; semilogy(SNRindB1,smld_bit_ray_err_prb,'*'); xlabel('Eb/No');ylabel('BER');

legend('理论AWGN','仿真AWGN','理论Rayleigh','仿真Rayleigh');

二.QPAK和OQPSK对比仿真程序:

%QPSK & OQPSK clear all; close all;

M=4; Ts=1; fc=10;

N_sample=16; N_num=100;

dt=1/fc/N_sample; t=0:dt:N_num*Ts-dt; T=dt*length(t);

py1f=zeros(1,length(t)); %功率谱密度1 py2f=zeros(1,length(t)); %功率谱密度2

for PL=1:100 %输入100段N_num个码字的波形,为了使功率谱密度看起来更加平滑,

%可以取这100段信号功率谱密度的平均 d1=sign(randn(1,N_num)); d2=sign(randn(1,N_num)); gt=ones(1,fc*N_sample);

%QPSK调制

s1=sigexpand(d1,fc*N_sample); s2=sigexpand(d2,fc*N_sample); b1=conv(s1,gt); b2=conv(s2,gt); s1=b1(1:length(s1)); s2=b2(1:length(s2));

st_qpsk=s1.*cos(2*pi*fc*t)-s2.*sin(2*pi*fc*t);

37

北京邮电大学世纪学院毕业设计(论文)

s2_delay=[-ones(1,N_sample*fc/2) s2(1:end-N_sample*fc/2)]; st_oqpsk=s1.*cos(2*pi*fc*t)-s2_delay.*sin(2*pi*fc*t);

%经过带通后,在经过非线性电路 [f y1f]=T2F(t,st_qpsk); [f y2f]=T2F(t,st_oqpsk);

[t y1]=bpf(f,y1f,fc-1/Ts,fc+1/Ts); [t y2]=bpf(f,y2f,fc-1/Ts,fc+1/Ts); subplot(221);

plot(t,y1);xlabel('t');ylabel('QPSK波形');

axis([5 15 -1.6 1.6]);title('经过带通后的波形');

subplot(222);

plot(t,y2);xlabel('t');ylabel('OQPSK波形'); axis([5 15 -1.6 1.6]);title('经过带通后的波形');

%经过非线性电路 y1=1.5*tanh(2*y1); y2=1.5*tanh(2*y2); [f y1f]=T2F(t,y1); [f y2f]=T2F(t,y2);

py1f=py1f+abs(y1f).^2/T; %QPSK不同段信号功率谱密度相加 py2f=py2f+abs(y2f).^2/T; %OQPSK不同段信号功率谱密度相加 end

py1f=py1f/100 %QPSK100段功率谱密度平均 py2f=py2f/100 %OQPSK100段功率谱密度平均

subplot(223);

plot(f,10*log10(py1f));xlabel('f');ylabel('QPSK功率谱密度(dB/Hz)'); title('经过非线性电路后的功率谱密度');axis([-15 15 -30 10]);

subplot(224);

plot(f,10*log10(py2f));xlabel('f');ylabel('OQPSK功率谱密度(dB/Hz)'); title('经过非线性电路后的功率谱密度');axis([-15 15 -30 10]);

figure(2) x=-2:0.1:2;

y=1.5*tanh(2*x);

plot(x,y);title('非线性电路的输入输入函数')

38

本文来源:https://www.bwwdw.com/article/vlfa.html

Top