MATLAB仿真技术

合集下载

基于Matlab的光学实验仿真

基于Matlab的光学实验仿真

基于Matlab的光学实验仿真一、本文概述随着科技的快速发展,计算机仿真技术已成为科学研究、教学实验以及工程应用等领域中不可或缺的一部分。

在光学实验中,仿真技术能够模拟出真实的光学现象,帮助研究者深入理解光学原理,优化实验设计,提高实验效率。

本文旨在探讨基于Matlab的光学实验仿真方法,分析Matlab在光学实验仿真中的优势和应用,并通过具体案例展示其在光学实验仿真中的实际应用效果。

通过本文的阐述,读者将能够了解Matlab在光学实验仿真中的重要作用,掌握基于Matlab的光学实验仿真方法,从而更好地应用仿真技术服务于光学研究和实验。

二、Matlab基础知识Matlab,全称为Matrix Laboratory,是一款由美国MathWorks公司出品的商业数学软件,主要用于算法开发、数据可视化、数据分析以及数值计算等领域。

Matlab以其强大的矩阵计算能力和丰富的函数库,在光学实验仿真领域具有广泛的应用。

Matlab中的变量无需预先声明,可以直接使用。

变量的命名规则相对简单,以字母开头,后面可以跟字母、数字或下划线。

Matlab支持多种数据类型,包括数值型(整数和浮点数)、字符型、逻辑型、结构体、单元数组和元胞数组等。

Matlab的核心是矩阵运算,它支持多维数组和矩阵的创建和操作。

用户可以使用方括号 [] 来创建数组或矩阵,通过索引访问和修改数组元素。

Matlab还提供了大量用于矩阵运算的函数,如矩阵乘法、矩阵转置、矩阵求逆等。

Matlab具有强大的数据可视化功能,可以绘制各种二维和三维图形。

在光学实验仿真中,常用的图形包括曲线图、散点图、柱状图、表面图和体积图等。

用户可以使用plot、scatter、bar、surf和volume 等函数来创建这些图形。

Matlab支持多种控制流结构,如条件语句(if-else)、循环语句(for、while)和开关语句(switch)。

这些控制流结构可以帮助用户编写复杂的算法和程序。

MATLAB仿真技术

MATLAB仿真技术

MATLAB仿真技术作业合集页脚内容1页脚内容1第1章 习题5.利用直接输入法和矩阵编辑器创建矩阵A=⎥⎦⎤⎢⎣⎡642531。

解:⑴利用直接输入法输入程序A=[1 3 5;2 4 6]按Enter 键后,屏幕显示A = 1 3 52 4 6⑵用矩阵编辑器创建矩阵,如图1.1所示。

图1.1 MATLAB 编辑器7.用矩阵编辑器创建矩阵a,使a 具有如下矩阵形式。

页脚内容2a=⎥⎦⎤⎢⎣⎡642531⇒a=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡654321⇒a=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321⇒a=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡098706540321⇒a=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000098706540321 解:用矩阵编辑器创建矩阵a 的过程如图1.2、1.3、1.4、1.5、1.6所示。

图1.2 图1.3图1.4 图1.5图1.6页脚内容39.已知矩阵B=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡922518113211912102201304161475231501017,试:①提取矩阵B 的第一行和第二行的第2、4、5个元素组成新矩阵1B ;②提取矩阵B 的第三行和第一行的全部元素组成新矩阵2B ;③使矩阵B 的第一行和第三行的第2;4个元素为0;④标出矩阵B 的第一行中小于5的元素。

解:①如上题,用矩阵编辑器生成矩阵B ,再输入程序B1=B([1,2],[2,4,5])按Enter 键后,屏幕显示B1 = 0 0 155 14 16②输入程序B2=B([1,3],:)按Enter 键后,屏幕显示B2 = 17 0 1 0 15 4 0 13 0 22③第一行和第三行的第2;4个元素原本就为0。

④输入程序如下C=B(1,:)<5; %将B矩阵第一行中小于5 的值标记为1D=B(1,C) %去B矩阵第一行中标为1的元素按Enter键后,屏幕显示D= 0 1 011.已知矩阵a为4阶魔方阵,令a+3赋值给b,a+b赋值给c,求b和c。

matlab电机仿真精华50例

matlab电机仿真精华50例

matlab电机仿真精华50例Matlab是一种功能强大的仿真软件,它被广泛应用于电机仿真领域。

在这篇文章中,我们将介绍Matlab电机仿真的50个精华例子,帮助读者更好地了解和应用电机仿真技术。

1. 直流电机的仿真:通过Matlab可以模拟直流电机的性能,包括转速、扭矩和电流等。

2. 交流电机的仿真:使用Matlab可以模拟交流电机的工作原理,包括转子和定子的相互作用。

3. 同步电机的仿真:通过Matlab可以模拟同步电机的运行特性,包括电压和频率的控制。

4. 步进电机的仿真:利用Matlab可以模拟步进电机的运行过程,包括步进角度和步进速度等。

5. 无刷直流电机的仿真:通过Matlab可以模拟无刷直流电机的工作原理,包括转子和定子的相互作用。

6. 电机控制系统的仿真:利用Matlab可以模拟电机控制系统的运行过程,包括速度和位置的闭环控制。

7. 电机噪声的仿真:通过Matlab可以模拟电机噪声的产生和传播过程,帮助优化电机的设计。

8. 电机故障诊断的仿真:利用Matlab可以模拟电机故障的发生和诊断过程,提供故障检测和排除的方法。

9. 电机热仿真:通过Matlab可以模拟电机的热传导和散热过程,帮助优化电机的散热设计。

10. 电机振动的仿真:利用Matlab可以模拟电机的振动特性,帮助优化电机的结构设计。

11. 电机效率的仿真:通过Matlab可以模拟电机的能量转换过程,评估电机的效率和能耗。

12. 电机启动过程的仿真:利用Matlab可以模拟电机的启动过程,包括起动电流和启动时间等。

13. 电机负载仿真:通过Matlab可以模拟电机在不同负载条件下的工作特性,帮助优化电机的设计。

14. 电机饱和仿真:利用Matlab可以模拟电机在饱和状态下的工作特性,提供更准确的仿真结果。

15. 电机电磁干扰的仿真:通过Matlab可以模拟电机产生的电磁干扰对其他设备的影响,提供干扰抑制的方法。

16. 电机电磁场的仿真:利用Matlab可以模拟电机内部的电磁场分布,帮助优化电机的设计。

MATLAB仿真

MATLAB仿真

第2章 MATLAB仿真 与其它高级语言相比较,MATLAB具有独特的优势: (1) MATLAB是一种跨平台的数学语言。采用MATLAB 编写的程序可以在目前所有的操作系统上运行 ( 只要这些系 统上安装了MATLAB平台)。MATLAB程序不依赖于计算机 类型和操作系统类型。
(2) MATLAB是一种超高级语言。MATLAB平台本身是 用C语言写成的,其中汇集了当前最新的数学算法库,是许 多专业数学家和工程学者多年的劳动结晶。 MATLAB 意味着站在巨人的肩膀上观察和处理问题,所 以在编程效率,程序的可读性、可靠性和可移植性上远远超 过了常规的高级语言。这使得 MATLAB 成为了进行科学研 究和数值计算的首选语言。
第2章 MATLAB仿真 MATLAB中可以方便地进行复数运算,例如计算
5
a b
2
,其中,a=15+j3,b=5e j2。
>>a=15+j*3,b=5*exp(j*2),(a.^2+b).^(1/5)[回车] 6. MATLAB 提供了极为便利的数据可视化手段,可 以作出任意函数的图像。作为快速入门,在此以一个
二维作图为例,作出函数 y=e-x/10sinx 在 x∈[ -1,10 ]范
第2章 MATLAB仿真 (5) MATLAB具有强大的绘图功能。利用MATLAB的 绘图功能,可以轻易地获得高质量的(印刷级)曲线图。具 有多种形式来表达二维、三维图形,并具有强大的动画 功能,可以非常直观地表现抽象的数值结果。这也是 MATLAB广为流行的重要原因之一。 (6) MATLAB具有串口操作、声音输入输出等硬件操 控能力。随着版本的提高,这种能力还会不断加强,使 得人们利用计算机和实际硬件相连接的半实物仿真的梦 想得以轻易实现。 (7) MATLAB程序可以直接映射为DSP芯片可接受的 代码,大大提高了现代电子通信设备的研发效率。

Matlab中的电力系统仿真与稳态分析技术

Matlab中的电力系统仿真与稳态分析技术

Matlab中的电力系统仿真与稳态分析技术随着电力系统技术的不断发展,利用计算机软件进行电力系统仿真和稳态分析已经成为一个常见的工具。

Matlab作为一种强大的数学计算和仿真软件,在电力系统仿真和稳态分析中发挥了重要的作用。

本文将探讨Matlab在电力系统仿真和稳态分析中的应用,并对其相关技术进行介绍和分析。

第一部分:电力系统仿真技术的基本原理电力系统仿真是通过建立电力系统的数学模型,模拟实际电力系统运行过程的一种技术。

其基本原理是建立电力系统的节点电压和支路电流方程,使用数值计算方法求解这些方程,以得到电力系统的稳态解。

Matlab在电力系统仿真中常用的函数有powerflow和newton_raphson,它们分别用于求解电力系统的潮流计算和稳定计算。

潮流计算是电力系统仿真中最基本的环节,用于计算电网各节点的电压和支路的电流。

它的实质是求解电力系统的非线性方程组,对于大规模电力系统而言,这个方程组的求解是一个非常复杂的过程。

而Matlab提供了一套强大的数值计算工具箱,能够有效地处理这类问题。

利用Matlab编写的潮流计算程序,可以提供准确的电力系统状态信息。

第二部分:Matlab在电力系统仿真中的应用案例Matlab在电力系统仿真中提供了丰富的函数库和工具箱,可以用于建立电力系统的数学模型、求解电力系统方程组以及进行结果的可视化分析。

下面我们通过一个简单的案例,来展示Matlab在电力系统仿真中的应用。

假设一个3节点的电力系统,其中包括一个发电机节点、两个负荷节点以及电源节点。

我们可以通过Matlab的power_system函数建立电力系统的模型,并使用powerflow函数计算电力系统的潮流分布。

计算完成后,我们可以通过Matlab的plot函数绘制各节点的电压和支路的电流图像,对电力系统的稳态运行情况进行可视化分析。

第三部分:电力系统稳态分析技术的应用除了电力系统仿真,Matlab还可以用于电力系统稳态分析。

现代控制系统分析与设计——基于matlab的仿真与实现

现代控制系统分析与设计——基于matlab的仿真与实现

现代控制系统分析与设计——基于matlab的仿真与实现随着现代科技的不断发展,越来越多的技术应用到现代控制系统中,而控制系统的分析与设计更是一项复杂的技术。

为了更好地实现现代控制系统的分析与设计,计算机技术尤其是基于Matlab的计算机仿真技术在现代控制系统分析与设计中已发挥着越来越重要的作用。

本文旨在介绍基于Matlab的仿真技术,总结它在现代控制系统分析与设计中的应用,为研究者们提供一个思考Matlab技术在现代控制系统分析与设计中的可能性的契机。

Matlab是当今流行的科学计算软件,它的设计特别适合进行矩阵运算和信号处理等工作,可以有效地处理大量复杂的数字信息,因此成为现代计算机技术应用于控制系统分析和设计的重要工具。

基于Matlab的仿真技术主要用于建立控制系统的动态模型,分析系统的特性,评估系统的性能,模拟系统的行为,确定系统的参数,优化系统的性能。

基于Matlab的仿真技术已被广泛应用于现代控制系统的设计中。

首先,基于Matlab的仿真技术可以有效地提高系统设计的效率。

通过实现对控制系统的动态模型建模,可以快速搭建出真实系统的模拟系统,并可以使用计算机来模拟系统行为,可以有效地缩短控制系统设计的周期。

其次,基于Matlab的仿真技术可以有效地改善系统设计质量。

通过分析模拟系统的行为,可以寻找更合理的解决方案,从而改善系统设计的质量。

第三,基于Matlab的仿真技术可以有效地确定系统参数。

通过在模拟系统中添加不同参数,并通过对系统模拟行为的分析,可以确定使系统更加有效的参数组合。

最后,基于Matlab的仿真技术可以有效地优化系统性能。

通过对系统行为的分析,可以识别出系统存在的问题,并设计相应的优化策略,从而实现系统性能的最佳化。

综上所述,基于Matlab的仿真技术在现代控制系统分析与设计中发挥着重要的作用,不仅可以提高系统设计的效率,而且可以改善系统设计的质量,确定系统参数,优化系统性能。

Matlab建模仿真

Matlab建模仿真

例:
求解Lorenz模型的状态方程,初值为 x1(0)=x2(0)=0,x3(0)=1e-10;
8/ 3, 10, 28
求解Lorenz模型的状态方程,

x 1(t ) x1(t ) x 2(t ) x3(t ) x 2(t ) x 2(t ) x3(t )
模块连接解释
0.5
Gain
×
Product 1
x´=∂x/∂t =bx-px²



S
Sum
Integrator
Scope

Gain1
LOGO
微分方程的Simulink求解 及Matlab数字电路仿真
微分方程的Simulink建模与求解
建立起微分方程的 Simulink 模型 可以用 sim( ) 函数对其模型直接求解 得出微分方程的数值解
3.计算机仿真
计算机仿真是在研究系统过程中根据相似原理, 利用计算机来逼真模拟研究对象。研究对象可以 是实际的系统,也可以是设想中的系统。在没有 计算机以前,仿真都是利用实物或者它的物理模 型来进行研究的,即物理仿真。物理仿真的优点 是直接、形象、可信,缺点是模型受限、易破坏 、难以重用。
计算机作为一种最重要的仿真工具,已经推出了 模拟机、模拟数字机、数字通用机、仿真专用机 等各种机型并应用在不同的仿真领域。除了计算 机这种主要的仿真工具外还有两类专用仿真器: 一类是专用物理仿真器,如在飞行仿真中得到广 泛应用的转台,各种风洞、水洞等;另一类是用 于培训目的的各种训练仿真器,如培训原子能电 站、大型自动化工厂操作人员和训练飞行员、宇 航员的培训仿真器、仿真工作台和仿真机舱等
当然我们可以直接观察Matlab工具箱原有的 Lorenz

MATLAB仿真技术

MATLAB仿真技术
目录 主页
4. 系统建模 4.1 连续系统建模
线性系统建模举例
例3:复位积分器的功用示例。 在仿真启动时,积分器从零开始对 0.5 t 进行积分。当复位口 信号 t-5=0 瞬间,积分器被重置为零。此后,再对0.5 ( t-5 ) 进行积分。
例3_4_2:积分模块直接构造微分方程求解模型。
假设从实际自然界(力学、电学、生态等)或社会中,抽象 出有初始状态为0的二阶微分程 x 0.2x 0.4x 0.2u,(t) u(t)是单位阶跃函数。本例演示如何用积分器直接构搭求解该微 分方程的模型。
符号矩阵的基本运算:加、减、乘、除、微积分等。 符号代数方程的求解。 符号微分方程的求解。 符号积分变换。
目录 主页
MATLAB的可视化功能
(1)二维曲线图形和三维曲面图形
二维符号函数曲线。
二维曲线图形。
三维符号函数曲线。 三维曲面图形。
三维线性图形。
目录 主页
(2)句柄图形 句柄图形(Handle Graphics)是一种面向对象的绘图系统。 图形对象、对象句柄和句柄图形树。 • MATLAB把用于数据可视和界面制作的基本绘图要素称 为句柄图形对象。 • 构成MATLAB句柄图形体系有12个图形对象(见句柄图形 树) 。
例:直接利用传递函数模块求解方程。
对二阶微分程进行拉氏变换:s2 X (s) 0.2sX (s) 0.4X (s) 0.2U (s)
可以得到: G(s) X (s)
0.2
U (s) s 2 0.2s 0.4
目录 主页
4.1 连续系统建模(续)
非线性系统建模举例
例3:求非线性系统
目录 主页
MATLAB的数值计算功能
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

MATLAB仿真技术作业合集第1章 习题5.利用直接输入法和矩阵编辑器创建矩阵A=⎥⎦⎤⎢⎣⎡642531。

解:⑴利用直接输入法输入程序A=[1 3 5;2 4 6]按Enter 键后,屏幕显示A = 1 3 52 4 6⑵用矩阵编辑器创建矩阵,如图1.1所示。

图1.1 MATLAB 编辑器7.用矩阵编辑器创建矩阵a,使a 具有如下矩阵形式。

a=⎥⎦⎤⎢⎣⎡642531⇒a=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡654321⇒a=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡987654321⇒a=⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡098706540321⇒a=⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎣⎡0000098706540321解:用矩阵编辑器创建矩阵a 的过程如图1.2、1.3、1.4、1.5、1.6所示。

图1.2 图1.3图1.4 图1.5图1.69.已知矩阵B=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡922518113211912102201304161475231501017,试:①提取矩阵B 的第一行和第二行的第2、4、5个元素组成新矩阵1B ;②提取矩阵B 的第三行和第一行的全部元素组成新矩阵2B ;③使矩阵B 的第一行和第三行的第2;4个元素为0;④标出矩阵B 的第一行中小于5的元素。

解:①如上题,用矩阵编辑器生成矩阵B ,再输入程序B1=B([1,2],[2,4,5])按Enter 键后,屏幕显示B1 = 0 0 155 14 16②输入程序B2=B([1,3],:)按Enter 键后,屏幕显示B2 = 17 0 1 0 15 4 0 13 0 22③第一行和第三行的第2;4个元素原本就为0。

④输入程序如下C=B(1,:)<5; %将B 矩阵第一行中小于5 的值标记为1D=B(1,C) %去B 矩阵第一行中标为1的元素按Enter 键后,屏幕显示D= 0 1 011.已知矩阵a 为4阶魔方阵,令a+3赋值给b ,a+b 赋值给c ,求b 和c 。

解:程序如下。

>> a=magic(4) %建立4阶魔方矩阵a = 16 2 3 135 11 10 89 7 6 124 14 15 1>> b=a+3 %将a 中各元素加3b = 19 5 6 168 14 13 1112 10 9 157 17 18 4>> c=a+b %将a,b 中对应元素相加c = 35 7 9 2913 25 23 1921 17 15 2711 31 33 513.已知A 为3×3的均匀分布随机矩阵,B 为3×2的均匀分布随机矩阵,C 为2×3的均匀分布随机矩阵,求Q=C *A^2*B 。

解:程序如下。

>> A=rand(3,3) %A 为3×3的均匀分布随机矩阵A = 664/815 717/785 408/14651298/1433 1493/2361 1324/2421751/5914 694/7115 338/353>> B=rand(3,2) %B 为3×2的均匀分布随机矩阵B = 687/712 581/607589/3737 614/12656271/6461 1142/1427>> C=rand(2,3) %C 为2×3的均匀分布随机矩阵C = 689/4856 1065/1163 1966/2049407/965 61/77 3581/5461>> Q1=C*A^2*BQ1 = 1444/357 6485/15441263/311 699/16315.指出下列矩阵函数所实现的具体运算。

⑴A=rand(5);⑵B=rank(A);⑶C=eig(A);⑷D=sqrtm(A);⑸E=det(A)解:⑴A=rand(5)建立5x5的均匀分布随机矩阵;⑵B=rank(A)求A 矩阵的秩;⑶C=eig(A)是求的A 矩阵的全部特征值;⑷D=sqrtm(A)是按矩阵乘法的方式对A 矩阵开平方根;⑸E=det(A)是求矩阵A 的行列式。

17.利用MATLAB 的roots 函数求ƒ(x)=5x +44x +103x +162x +17x +12=0的根。

解:程序运行如下>> p=[1,4,10,16,17,12]p = 1 4 10 16 17 12>> x=roots(p)x = -1.6506-1.0000 + 1.4142i-1.0000 - 1.4142i-0.1747 + 1.5469i-0.1747 - 1.5469i19.画出一个幅度为2、频率为4Hz 、相位为3π的正弦信号。

解:程序如下>> A=2;>> phi=pi/3;>> omega=2*pi/12;>> n=-10:10;>> x=A*sin(omega*n+phi);>> stem(n,x,'fill');>> grid on;运行结果如图1.7所示。

图1.7 离散正弦信号图第2章习题1.系统的微分方程为'x(t)=-4x(t)+2u(t),其中u(t)是幅度为1、角频率为1rad/s 的方波输入信号,试建立系统的Simulink模型并进行仿真。

解:利用模块库中的模块建立系统模型,如图2.1所示。

图2.1 求解微分方程的模型在Scope窗口中看到仿真曲线如图2.2所示。

图2.2 仿真结果3.某单位反馈控制系统如图2.3(a)所示,引人反馈如图2.3(b)所示。

F⊗Y F(a)控制系统结构图 (b)图2.3(1)在Simulink环境下构建原始系统的结构图,输入阶跃信号,进行仿真,并对结果进行分析。

(2)在原系统中引人比例反馈,在Simulink环境下构建引人比例反馈后的系统结构图,进行仿真,并对结果进行分析。

解:(1)在Simulink环境下构建原始系统的结构图如图2.4所示,仿真结果如图2.5所示。

图2.4 仿真模型图2.5 仿真结果(2)在Simulink环境下构建引人比例反馈后的系统结构图如图2.6所示,仿真结果如图2.7所示。

图2.6 仿真模型图2.7 仿真结果5.使用Simulink 仿真求下列系统的单位脉冲响应(Simulink 中没有单位冲激信号模块,所以要利用阶跃信号模块经微分来产生)。

(1)H (s )=)5)(2()1(5+++s s s s (2)H (s )=115232++++s s s s 解:(1)建立的系统仿真模型如图2.8所示,仿真结果如图2.9所示。

图2.8 系统仿真模型图2.9 仿真结果(2)建立的系统仿真模型如图2.10所示,仿真结果如图2.11所示。

图2.10 系统仿真模型图2.11 仿真结果第3章习题2.利用信号处理模块库中的模块,构造并仿真信号:ƒ(n)=δ(n)+2u(n-1)-δ(n-3)解:图3.1 仿真框图选择模块搭建好的模型如图3.1所示。

接着设置各个模块的参数,Discrete Impulse模块参数如图3.2所示,Discrete Impulse1模块参数如图3.3所示,Buffer中Output Buffer Size设置为20,Gain模块Gain参数设为-1,Constant模块中Constant Value设为2,Delay模块中Delay参数设为1。

仿真结果如图3.4所示。

图3.2 Discrete Impulse模块参数图3.3 Discrete Impulse1模块参数图3.4 仿真结果5.设计一个巴特沃斯数字低通滤波器,使其满足:通带截止频率为0.4π,通带波纹小于0.5dB;阻带截止频率为06π,阻带最小衰减为50dB,试用FDAtool设计该数字滤波器,并生成脉冲响应曲线和频率响应曲线。

解:按3.5图设计滤波器参数。

图13.5滤波器设计界面点击Impulse选项得到冲激响应曲线如图3.6所示。

图3.6 冲激响应频率响应曲线如图3.7所示。

图3.7 幅频特性和相频特性12.自行录入一段语言信号,并对其做4倍抽取运算,观测抽取前与抽取后的频谱变化。

解:选择模块构造仿真框图如图3.8所示。

图3.8 仿真模型框图在matlab工作空间输入命令[x,fs]=wavread('E:\yinyue\xuyong.wav');设置各个模块参数。

Buffer模块参数如图3.9所示。

Signal from work space参数如图3.10所示。

图3.9 Buffer参数设置图3.10 Signal from work space参数设置仿真结果如下:图3.11 仿真前图3.12 仿真后第4章习题2.对四进制差分相移键控(DPSK)通信系统进行建模和蒙特卡罗仿真。

解:程序如下:clear all;SNRindB1=0:2:12;SNRindB2=0:0.1:12;for i=1:length(SNRindB1)simu_err_prb(i)=snr2ps(SNRindB1(i)); %仿真误码率endfor i=1:length(SNRindB2)SNR=exp(SNRindB2(i)*log(10)/10);theo_err_prb(i)=2*qfunc(sqrt(SNR));endsemilogy(SNRindB1,simu_err_prb,'*');hold on;semilogy(SNRindB2,theo_err_prb);xlabel('Eb/N0(dB)');ylabel('误码率');legend('仿真符号误码率','理论符号误码率');function [p]=snr2ps(snr_in_dB)N=10000;Es=1;snr=10^(snr_in_dB/10);sigma=sqrt(Es/(4*snr));for i=1:2*Ntemp=rand;if (temp<0.5)dsource(i)=0;elsedsource(i)=1;endendmapping=[0 1 3 2];M=4;[diff_enc_output]=cm_dpske(Es,M,mapping,dsource);for i=1:N[n(1) n(2)]=gausamp(sigma);r(i,:)=diff_enc_output(i,:)+n;endnumoferr=0;prev_theta=0;for i=1:Ntheta=angle(r(i,1)+j*r(i,2));delta_theta=mod(theta-prev_theta,2*pi);if ((delta_theta<pi/4)|(delta_theta>7*pi/4))decis=[0 0];elseif (delta_theta<3*pi/4)decis=[0 1];elseif (delta_theta<5*pi/4)decis=[1 1];elsedecis=[1 0];endprev_theta=theta;if ((decis(1)~=dsource(2*i-1))|(decis(2)~=dsource(2*i))) numoferr=numoferr+1;endendp=numoferr/N;endfunction [enc_comp]=cm_dpske(E,M,mapping,sequence)k=log2(M);N=length(sequence);remainder=rem(N,k);if(remainder~=0)for i=N+1:N+k-remaindersequence(i)=0;endN=N+k-remainder;endtheta=0;for i=1:k:Nindex=0;for j=i:i+k-1index=2*index+sequence(j);endindex=index+1;theta=mod(2*pi*mapping(index)/M+theta,2*pi);enc_comp((i+k-1)/k,1)=sqrt(E)*cos(theta);enc_comp((i+k-1)/k,2)=sqrt(E)*sin(theta);endfunction [y1 y2]=gausamp(sigma)y1=sigma*randn(1);y2=sigma*randn(1);end运行结果如图4.1所示。

相关文档
最新文档