matlab

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章MATLAB开发平台及Simulink仿真环境基于广义正态分布(即稳定分布)下的时间延迟估计的的研究过程是将软件方案实现的算法通过MATLAB硬件语言编程,通过仿真,达到实时处理的效果。本课题所选的MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。硬件语言为Verilog语言。既然计划用Verilog语言对算法进行编程,那么了解MATLAB软硬件开发平台及MATLAB语法规则是非常必要的,掌握MATLAB语言与C语言等软件语言的区别,更是算法设计的必要前提。此外,了解算法原理也是必不可少的,这有助于把握算法的逻辑结构,为更好的设计起着很大的作用。2.1MATLAB概述2.1.1MATLAB基础知识和基本编程1)基础知识MATLAB的一个重要特点就是它有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统神经网络、模糊逻辑、小波分析和系统仿真等方面应用。MATLAB系统由以下五个主要部分构成:开发环境:由一系列工具组成,这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于浏览帮助、工作空间、文件的浏览器。MATLAB数学函数库:这是一个包含大量计算算法的集合,这些函数包括从最简单最基本的函数(如加、正弦等)到诸如矩阵的特征向量、快递傅里叶变换等较复杂的函数。MATLAB语言:这是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入输出和面对对象的编程特点。用户可以命令窗口中将输入语句与执行命令同步,也可以先编写还一个较大的复杂的应用程序(M文件)后再一起运行。图形处理:用MATLAB可以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维数据可视化、图像处理、动画和表达式作图,低层次的作图包括定制图形的显示和为用户的MATLAB应用程序建立的图形用户界面。MATLAB应用程序接口(API):这是一个库,它允许用户编写可以和MATLAB进行交互的C或Fortran语言程序。在MATLAB环境中描述问题及编制求解问题的程序时,用户可按照符合人们科学思维的方式和数学表达习惯的语言形式来书写程序,典型应用主要包括:数学开发、算法开发、数据采集、系统建模和仿真、数据分析和可视化、科学和工程绘图、应用软件开发(包括用户界面)。MATLAB是一个交互式系统(写程序与执行命令同步),其基本的数据元素是没有维数限制的阵列。这使得用户可以解决许多工程上技术的问题,特别是那些包含了矩阵和向量的公式的计算。采用MATLAB编制解决上述问题的程序比采用只支持标量和非交互式的编程语言更加方便。无论是单机还是网络环境,MATLAB都可以发挥其卓越的性能。若单纯地使用MATLAB语言进行编程,而不必连接外部语言的程序,则MATLAB语言编写出来的程序可以不做任何修改直接移植到其他机型上去直接使用。MATLAB中定义了很多种数据类型,包括整数、浮点数、字符、字符串和逻辑类型等。用户甚至可以定义自己的数据类型。数值类型包含整数、浮点数和复数三种类型。还有inf和NaN两个特殊数值。逻辑类型用1和0表示true和false两种状态。可以用函数logicsl()来得到逻辑类型的数值。函数logical()可以把任何非零的数值转换为逻辑true,把数值0转换为逻辑false.MATLAB中规定用char表示一个字符。一个char类型的1×n数组则可以成为字符串string。函数句柄是MATLAB中用来提供间接调用的数据类型。函数句柄可以传递给其他函数以便该函数句柄所代表的函数可以被调用。函数句柄还可以被存储起来,以便以后利用。结构体是根据属性名组织起来的不同类型数据的集合。有一种容易与结构体类型混淆的数据类型是单元数组类型,它是一种特殊类型的MATLAB数组,它的每一个元素叫做单元,而每一个单元包含MATLAB数组。结构体和单元数组的共同之处在于它们都提供了一种分级存储机制来存储不同类型的数据,不同之处是组织数据的方式不一样。结构体数组里的数据时通过属性名来引用的,而在单元数组里,数据时通过单元数组下标引用来操作的。结构体数组是一种由“数据容器”组成的MATLAB数组,这种“数据容器”成为结构体的属性(field)。结构体的任何一个属性包含任何一种类型的数据。和其他数据类型一样,结构体也是一种数组。一个单独的结构体就是一个1×1的结构体数组。用户可以构造任意维数的结构体数组,当然也包含多维结构体数组。MATLAB的数学运算以矩阵或数组为基本单元,定义了矩阵或数组之间的四则运算、求幂运算和转置运算等。①加减运算假定有两个矩阵A和B,则可以有A+B和A-B实现矩阵的加减运算。运算规则是:若A和B矩阵的维数相同,则可以执行矩阵的加减运算,A和B矩阵的相应元素相加减。如果A与B的维数不同,则MATLAB给出错误信息,提示用户两个矩阵的维数不匹配。②乘法与除法假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A*B为m×p矩阵。在MATLAB中,有两种矩阵除法运算:\和/,分别表示左除了右除。如果A矩阵是非奇异方阵,则可以实现A\B和B/A运算。对于矩阵来说,左除和右除表示两种不同的除数矩阵和被除数矩阵的关系。③幂、转置运算一个矩阵的幂运算可以表示成A^x,要求A方阵,x为标量。转置运算符是单撇号(‘)。利用函数rot90(A,k)将矩阵A旋转90°的k倍,当k为1时可省略。④比较运算a)当两个比较量是标量时,直接比较两数的大小。若关系成立,关系表达式结果为1,否则为0.b)当参与比较的量是两个维数相同的矩阵比较是对两矩阵相同位置的元素按标量关系运算规则逐个进行,并给出元素比较结果。最终的关系运算的结果是一个维数与原矩阵相同的矩阵,它的元素由0或1组成。c)当参加比较的一个是标量,一个是矩阵时,则把标量也矩阵的每一个元素按标量关系运算规则逐个比较,并给出元素比较结果。最终的关系运算的结果是一个维数也原矩阵相同的矩阵,它的元素由0或1组成。⑤逻辑运算a)在逻辑运算中,确认非零元素为真,用1表示,零元素为假,用0表示。b)设参与逻辑运算的是两个标量a和b,那么a&b:a、b全为非零时,运算结果为1:,否则为0;a、b中只要有一个非零,运算结果为1;当a时零时,运算结果为1;当a为非零时,运算结果为0.c)若参与逻辑运算的是两个同维矩阵那么运算将对矩阵相同位置上元素按标量规则逐个进行。最终运算结果是一个与原矩阵同维的绝阵,其元素由0或1组成。d)若参与逻辑运算的是一个标量,一个好似矩阵,那么运算将在标量与矩阵中的每个元素之间按标量规则逐个进行,最终运算结果是一个与矩阵同维的矩阵,其元素由1或0组成。e)逻辑非是单目运算符,也服从矩阵运算规则。f)在算术、关系、逻辑运算中,算术运算优先级最高,逻辑运算优先级最低。⑥符号运算与数值运算不同,数值运算中必须先对变量赋值,然后才能参与运算,而符号运算无须事先对独立变量赋值,运算结果以标准的符号形式表达。符号运算可以获得任意精度的解。2)基本编程MATLAB作为一种广泛应用于科学计算的工具软件,不仅具有强大的数值计算、符号计算、矩阵计算的能力和丰富的画图功能,还可以像C语言、FORTRAN等计算机高级语言一样进行程序设计,编写扩展名为.m的M文件,实现各种复杂运算。所谓M文件,简单来说就是用户把要实现的命令写在一个以.m作为扩展名的文件中,然后由MATLAB系统进行解释,最后运行处结果。M文件有函数(Function)和脚本(Scripts)两种格式。二者相同之处在于它们都是以.m作为扩展名的文本文件,不进入命令窗口,而是由文本编辑器来创建外部文本文件。MATLAB中许多常用函数(如sqrt、int和abs等)都是函数式M文件,使用时,MATLAB获取传递给它的变量,利用操作系统所给的输入,运算得到要求要求的结果,然后返回这些结果。函数文件类似于一个黑箱,由函数执行的命令以及这些命令所创建的中间变量嗾使隐含的。运算过程中的中间变量都是局部变量(除特别声明外),存放在函数本身的工作空间内,不会和MATLAB基本工作空间(Baseworkspace)的变量相互覆盖,对用户来说,可见的只是输入和输出,因此易于使程序模块化,特别适合于大型程序代码。下面通过一个函数例子来说明其结构。typefunction1.mFunctionaverage=function1(value)Average=sum(value)/length(value);此函数的第一行为函数定义行,以function语句作为引导,定义了函数名称(function1,函数名很文件名必须相同)、输入自变量(value)和输出自变量(average).function为关键词,说明此M文件为函数。第二行则为函数主体,规范函数的运算过程,并指出输出自变量的值。若调用此函数,可输入以下命令:value=[123];average=function1(value)Average=2脚本是一个扩展名为.m的文件,其中包含了MATLAB的各种命令,与批处理文件很类似,在MATLAB命令窗口下直接输入此文件的主文件名,MATLAB可逐一执行在此文件内的所有命令,和在命令窗口逐行输入这些命令一样。脚本式M文件运行产生的所有变量都是全局变量,运行脚本后,所产生的所有的变量搜驻留在MATLAB基本工作空间内,只要用户不使用clear命令加以清除,且MATLAB指令窗口不关闭,这些变量将一直保存。基本空间随MATLAB的启动而产生,在关闭MATLAB软件时该基本空间被删除。整个系统是通过一个主函数和若干个子函数实现的,这样便于调试,也增强了可读性。这些子函数包括QAM调制函数(Qam_modulation.m)、绘制星座图(plot_astrology.m)、插值(insert_value.m)、绘制正交信号图(plot_2way.m)、绘制滤波后的信号图(stem_2way.m)、升余弦滤波(rise_cos.m)、调制到载波(modulate_to_high.m)、叠加高斯噪声(generate_noise.m)、采样(pick_sig.m)、解调(demodulate_sig.m)、和误码率曲线作图(plot_snr.m)。2.1.2MATLAB数据分析数据分析和处理死各种应用中非常重要的问题。MATLAB提供大量的函数方便用户使用。如多项式函数,这些函数用于多项式求值、多项式乘法、多项式除法、多项式求导等;插值函数,这些函数在获得数据的平滑度、时间复杂度和空间复杂度方面上有不同的性能;基本的数据分析函数如矩阵的平均值、协方差和相关矩阵、有限差分和梯度、信号滤波和卷积以及傅里叶变换。还有功能函数,包括函数的表示方法、函数的画图、函数的最大值最小值、函数的数值积分以及在功能函数中使用参数的方法。还有三类微分方程组问题的解法,包括常微分方程组的初值问题、延迟微分方程组数值和常微分方程组的边界问题。插值是在已知数据之间寻找估计值的过程。在信号处理和图像处理中,插值是极其常用的方法。一维插值就是对一维函数y=f(x)进行插值,指定的方法如下:a)最领近插值,特点最快的插值方法,但数据平滑方面最差,得到的数据部连续。b)线性插值,特点是比领近插值占用更多的内存,执行速度稍慢,但其数据平滑方面优于领近插值。数据变化时连续的。c)三次样条插值,特点是处理速度慢,占用内存小于分段三次厄米多项式插值,可以产生最光滑的结果,但输入数据部均匀或者某些点靠得很近,会出现一些错误。d)分段三次厄米多项式插值,特点是处理速度和消耗的内存比

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功