ImageVerifierCode 换一换
格式:DOCX , 页数:69 ,大小:940.75KB ,
资源ID:23463752      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/23463752.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Matlab 70 Simulink 60应用实例仿真与高效算法开发第一章.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Matlab 70 Simulink 60应用实例仿真与高效算法开发第一章.docx

1、Matlab 70 Simulink 60应用实例仿真与高效算法开发第一章 第一章 MATLAB 语言程序基础本章旨在介绍关于MATLAB的基本知识,使读者可以更好的理解后续章节中的内容。其实,对于MATLAB的基本知识的介绍可以在市面是流行的各类MATLAB书籍中看到,那么本书中对于此部分的介绍又有哪些自己的特点呢?首先,省去了MATLAB中一些与高效率计算编程无关的赘述,使读者在能力理解和运用本书中心部分对于高效算法的介绍前提下,用最少的时间获得必须的预备知识;其次是对于一些后续章节中经常用到的基本概念和方法作了更为详细的介绍,这样读者在阅读完本章节以后可以更轻松的理解本章中对于算法介绍的

2、内容。本章主要内容包括: MATLAB的数据类型 基本数学运算 基本符号运算 基本的流程结构 函数编写与调试 图形的绘制1.1 MATLAB 的数据类型 本节主要介绍MATLAB中的数据类型。不同类型的对象在计算机语言中可用不同类型的变量来描述。为使读者能够更好的理解后续章节的算法程序,本节专门对MATLAB的数据类型进行介绍。1.1.1常量与变量 1.1.1.1常量MATLAB中,常量和变量是基本的语言元素。MATLAB的数值采用传统的十进制表示,可带负号或小数点。举例如下:5 -87 0.001 3.1415 1.05457e-34 6.02e23 MATLAB还提供了一些内部常量,也可以

3、理解为MATLAB默认的预定义变量。这些常量定义了编程和应用中经常用到的数据,如,圆周率、虚数单位等。随着MATLAB启动,这些常数就被产生。表1-1 MATLAB中的一些内部常量内部常量基本意义ans默认变量名或缺省变量名,MATLAB会自动将无指定输出变量的计算结果默认保存到ans变量中eps机器零阀值Inf 或 inf表示无穷大的结算结果,如1/0i 或 j虚数单位,有 i=j=pi圆周率NaN 或 nan非数值,通常表示不合法数值的值。如,0/0或inf/inf所得到的结果realmax(realmin)最大(小)正实数nargin(nargout)函数输入(输出)宗量数目comput

4、er计算机类型 versionMATLAB版本字符串表1-1中所列常量可不必声明,直接调用。这里值得指出的是表1.1中所列常量的意义是在表中变量名未被用户赋值的情况下才成立的。假如用户对表中任何一个内部常量的字符串进行了赋值,那么该常量的默认意义或者默认值已被用户的新赋值所覆盖,只不过这种“覆盖”是临时的,如果用户运行了clear指令将MATLAB内存清空,或者MATLAB指令窗被重新启动,那么所有的内部常量又会恢复到系统默认的意义。【例1-1】 系统内部常量的调用和赋值pi % 察看系统的默认值ans = 3.1416pi = ans + 1 % pi被重新赋值,不再是原系统默认值pi =

5、5.1416clear % 清空内存中的变量pi % 重新察看pi的值ans = 3.1416可见,在无指定输出变量时候,系统自动把值赋给了ans。通过对pi进行重新赋值,原先默认值(圆周率)被覆盖,清空内存之后,pi又恢复到系统默认值。1.1.1.2变量所有MATLAB中定义的变量都以数组或者矩阵形式保存,他提供的数据类型多达十余种,如逻辑型、字符型、数值型、单元数组、结构数组、函数句柄等。下面简单介绍一下几种数据类型。 逻辑型 此类数据类型只能包含1,0或者true,false。举例:A = 1 3 5; 4 1 7; 2 6 9;B = A2B = 0 1 1 1 0 1 0 1 1 字

6、符型 又称字符串数组,如果没有串数组及其相应的操作,数据的可视化和构作MATLAB的宏指令都会遇到困难。字符串的创建也有值得注意的地方,就是必须首先将待建的字符置于英文状态下的“单引号对”中。例:clear % 清除所有内存变量A =Hello, everyone! % 对A进行赋值A =Hello, everyone! 数值型 数值数组及其运算始终是MATLAB的核心内容。数值型又可分为单精度数值型数组(single)、双精度数值型数组(double)和整型数组。MATLAB进行数值计算时,默认所有变量都为double型。使用format命令可以设置变量的输出格式,例如:a =2.3609

7、%系统默认为double型a = 2.3609format long %设置系统为15位定点格式输出aa = 2.36090000000000format long e %设置系统为15位浮点格式输出aa=2.360900000000000e+000在MATLAB中,变量的命名是要遵守一定规则的。首先,对变量命名要注意区分大小写,比如,Myname和myname表示两个不同的变量。pi代表系统默认的圆周率,但Pi、PI和pI都不是;其次,在MATLAB中对变量进行命名时,第一个字符必须时英文字母,如0abc、_abc等都不是合法的;另外,MATLAB中在变量名的中间不能包含空格(backspa

8、ce)、标点和括号等,不过可以包含下划线,比如,ab_c是可以的,ab c或者ab,c等都不是合法的。1.1.2 运算符 运算符从其功能来分大致有三种:算术运算符、比较运算符和逻辑运算符。现在分别介绍一下它们的构成和使用。1.1.2.1算术运算符MATLAB中的运算符不只是完成传统意义上的算术所需的四则运算,另外还有幂、转置等运算。由于MATLAB具有强大的矩阵运算功能,所以它的很多运算符都是针对矩阵操作的。表达式所采用的运算符见表1-2。表1-2 算术运算符及其功能运算符功能运算符功能+加-减.*乘./右除.左除.幂. 转置复数共轭转置*矩阵乘法/矩阵除法矩阵的幂:冒号操作符要说明的是,一维

9、的运算可以看作是矩阵运算的一种特殊形式,其运算符是一样的,例如一维运算中没有的转置,也可以看作是一维矩阵的转置,只是它转置后的结果不变罢了。此外,MATLAB中针对向量的算术操作专门设计了一类近似的运算符号,就是在一般的矩阵运算符前加“.”,它代表所参与运算的向量对应元素之间的运算。1.1.2.2 比较运算符比较运算符的作用主要是用来比较两个数值的大小,它的写法与一般的手写比较运算符有所区别。具体见表1.3所示。表1.3 比较运算符指令功能指令功能=大于等于小于=小于等于= =等于=不等于值得指出的是一般的表示等于的运算符在MATLAB中写为“= =”,传统意义上的等号“=”在MATLAB运算

10、中用于赋值运算。此外,进行比较操作时注意以下两点:(1), 标量可与任何维数组进行比较。比较在此标量与数组每个元素之间进行,比较结果与参与比较的数组同维;(2), 参与比较的没有标量时,比较运算符两端的数组必须维数相同,比较在两数组对应位置上的元素间进行,因此比较结果将与参与比较的数组相同。举例说明:【例1-2】比较运算A = 1 2 3 4 5;B = 5 4 3 2 1;C = (A3)|如符号两端表达式有一式为真,返回true(1), 否则返回0。(a = = 0 ) | ( a/b0)这里说明一下,二进数位逻辑操作时,往往首先把运算量转换为二进制表示,然后逻辑运算在两个二进制数的自右到

11、左相应数位间进行,输出的结果为运算所得的二进制数所对应的十进制数。当逻辑运算中没有标量时,参与运算的数组必须维数相同,运算在两数组的对应位置元素间进行。此外,“&”和“|”操作都有其特殊的性质,两者都属于先决逻辑操作符。“&”操作时,先观察运算符左侧的参与运算的表达式是否为“假”;若是,则马上给出运算结果为“假”,而不必再观察运算符右侧的参与运算量。当左侧的运算量为“真”时,才接着对右侧运算量进行计算或者判断,进而执行“与”逻辑运算。“|”操作时,首先判断左侧的运算量是否为“真”;若是,立即给出计算结果“真”,而不必观察右侧参与运算量;若不是,则对右侧运算量进行观察,进而执行“与”操作。1.1

12、.3结构数组结构数组(也有人称为构架数组)能在一个数组里存放任何类型的数据。结构数组的基本单元(elment)是结构。数组中的每个单元以下标区分,他们之间是平等的。结构数组维数不受限制,可以为一维、二维或更高维。结构数组的创建有两种方式,下面我们就看一个例子:【例1-3】下面创建一个my_software结构数组,里面存储的是一个软件系统的信息。 首先看第一种方法,直接使用赋值语句构造结构数组(1)直接对域进行赋值my_software.name = MATLAB ; % 可以直接将字符串赋值给结构数组的域my_software.version = 7.0.0.19920(R14) ;my_p

13、uter = PCWIN ;my_software.testdata.test1= 3.74 3.27 ; 3.56 3.41; %可以直接将数组赋值给结构数组的域my_software.testdata.test2= 65.23 68.75 ; 63.06 61.18;(2) 查看结果my_software % 显示结构数组的内容 my_software = name: MATLABversion: 7.0.0.19920(R14)system: PCWINcomputer: PCWINtestdata: 1x1 structmy_software.testdata % 显示testdata

14、域中的内容ans = test1: 2x2 double test2: 2x2 doublemy_software.testdata.test1 % 显示test1域中的内容,系统默认为double型ans = 3.7400 3.2700 3.5600 3.4100 另外,还可通过MATLAB的一个专门的构造函数struct来创建结构数组。(1) 使用struct函数构造结构数组my_software = struct(name,MATLAB,version,7.0.0.19920(R14),computer, PCWIN, testdata,); % 用来预定义空域testdatamy_so

15、ftware.testdata = struct(test1, 3.74 3.27 ; 3.56 3.41, test2, 65.23 68.75 ; 63.06 61.18); % 再次调用struct命令来对testdata进行赋值(2) 查看结果my_software % 显示结构数组的内容my_software = name: MATLABversion: 7.0.0.19920(R14)system: PCWINcomputer: PCWINtestdata: 1x1 struct事实上结构数组内的其他内容也是一样的,本例就是简单介绍了两种不同的创建方法。这里还要说明几点,(1) s

16、truct函数指令中的输入参数,第2、4、6等偶数项如为字符串需用单引号,或者为数组,数值数组或者字符数组均可; (2) 空数组可以用来创建新的空域,并且可以在接下来的语句中直接对其进行赋值操作。(3) struct命令不能创建多重的结构数组,如有需要可以多次调用struct命令或者嵌套调用struct函数。接下来介绍结构数组中内容的提取和编辑。【例1-4】 结构数组内容的提取和编辑首先建立一个简单的统计个人计算机信息的结构数组,mycomputer.manufacturer = Lenovo;mycomputer.type = 补天系列商用机;mycomputer.cpu = Pentium

17、(R) 4 3.000GHz;mycomputer.system = window XP English version;mycomputermycomputer = manufacturer: Lenovotype: 补天系列商用机cpu: Pentium(R) 4 3.000GHzsystem: window XP English version如果要获得电脑是何系列的信息,并且将该信息单独另外存储,可以在结构名mycomputer后面跟一个小数点,接下来是要获取信息的字段名。如用MATLAB语句来表达,如下:Pctype_informations = mycomputer.manufac

18、turer, mycomputer.type ; %将电脑的部分信息存入一个数组中Pctype_informations %查看新的数组Pctype_informations = Lenovo 补天系列商用机下面给读者演示如何在结构数组mycomputer上进行域的增添和删除操作。【例1-5】对结构数据进行域的增添和删除继续对例【1-4】中的结构数组进行操作。mycomputer(2).user.usertype = administrator;mycompute % 查看mycomputer信息mycomputer = 1x2 struct array with fields: manufa

19、cturer type cpu system user可见,对mycomputer(2)的赋值操作会影响到整个结构数组mycomputer的总体结构。在此类数组中任何一个结构上的域增添操作,都会对整个结构产生影响。再查看结构数组mycomputer(1).user的内容。mycomputer(1).userans = 当我们再查看mycomputer(1).user的结构时,它并没有usertype这一项子域。可见对mycomputer(2)中的域user的子域usertype的赋值操作并没有对mycomputer(1).user子域产生影响,所以在结构数组中任何一个结构上的子域增添操作,对整

20、个结构中的同级别的域并没有影响。下面通过实例来总结结构数组的删除操作规律,mycomputer(1).user.username = Guest;mycomputer(1).user.usertype = guest;mycomputer(2).user.username = adminmycomputer(2).user = rmfield (mycomputer(2).user, usertype ); % 删除usertype子域mycomputer(2).user % 查看mycomputer(2).user的内容ans = username: adminmycomputer(1).u

21、ser % 查看mycomputer(1).user的内容ans = username: Guest usertype: guest通过以上操作可以看出来删除子域的操作也只是影响到被操作的那个具体结构。1.1.4 数组与矩阵的生成MATLAB中,数值数组( Numeric Array)和数组运算(Array Operation)构成了其核心内容。本节主要介绍数组和矩阵的生成。这里主要介绍一维数组的创建。大致可以分三种方法,直接构造法、增量法、函数构造法。1. 直接构造法又称逐个元素输入法,这种方法最直接也最简单。下面举例说明。【例1-6】数组元素的直接构造法a = 40 6.3 1/2 1e-

22、2 sqrt(5) %采用逐个元素输入法构造数组a = 40.0000 6.3000 0.5000 0.0100 2.2361这就构造了有五个元素的一维数组元素a。2. 增量法部分参考书称此方法为冒号生成法。它主要是利用MATLAB中提供的冒号运算符来实现赋值运算。举例说明入下:【例1-7】数组元素构造的增量法A = 1:9A = 1 2 3 4 5 6 7 8 9系统默认的增量为1,以上就生成了19的数组。也可以设置增量的步长,举例如下:A = 10.5:-1.5:3A = 10.5000 9.0000 7.5000 6.0000 4.5000 3.0000这样就生成了一组以-1.5为步长的

23、递减数组。另外有一点值得说明,看下面一个数组:b = 2;A = 10.5 : -1.5 : bA = 10.5000 9.0000 7.5000 6.0000 4.5000 3.0000可见本例中后面的终止值发生变化时并没有影响到A的生成,当b的范围在1.5b3之间变化时,所生成数组A的值并不会发生变化。从严格意义上讲,如二维数组带有线形变换含义时,该二维数组就是矩阵。矩阵的创建通常有两种方法,直接输入法和利用M文件创建。值得注意的是,首先输入数组时整个数组必须以方括号“”为其首尾;其次数组的行与行之间必须用分号或者回车键Enter隔离;另外数组元素由“,”或空格分隔。 1.2 基本数学运算

24、. . 1.2.1 向量及其运算如果一个向量A有1行,n列元素,那么称该向量为n阶行向量;如果向量A有1列,n行元素,那么该向量就为n阶列向量。MATLAB语言中定义了下面各种矩阵的基本代数运算:(1) 向量转置。在数学公式中一般把一个矩阵的转置记作,如果矩阵为n阶行向量,那么转置后为n阶列向量。转置的举例如下:【例1-8】向量转置 A=1 2 3A = 1 2 3 B=AB = 1 2 3(2) 向量的加减法运算。存在两个向量A和B,可由和命令执行向量的加减法。通常如A和B向量维数相同,它会自动地将A和B向量的相应元素相加减。举例如下:【例1-9】向量的加减运算 A=2 3 4; B=1 2

25、 3; C=A+BC = 3 5 7还有一种情况是,参与加减操作的其中一个为标量结果会是什么结果呢? D=5-AD = 3 2 1(3) 向量乘法。存在两个向量A和B,如果两者分别为n维列向量和行向量,那么该操作可表达为,举例如下:【例1-10】向量乘法 A=1 2 3; B=2 3 4; C=A*BC = 20 D=B*AD = 2 4 6 3 6 9 4 8 12(4) 点运算。该运算是MATLAB定义的一类特殊的操作。两个向量之间的点运算式他们对应元素的直接运算。【例1-11】MATLAB中的点运算 A.*Bans = 2 6 12 A./Bans = 0.5000 0.6667 0.7

26、500向量的乘方运算,举例 A.2ans = 1 4 9除了代数运算,还有逻辑运算、比较运算等。1.2.2 矩阵及其运算如果一个矩阵有n行、m列元素,称该矩阵为矩阵。倘若,则该矩阵又称为方阵。矩阵的基本数学运算包括代数运算、矩阵的逻辑运算和矩阵的比较运算。其中矩阵代数运算包括矩阵转置、加减法、矩阵乘法、矩阵左(右)除、矩阵翻转和矩阵乘方运算。1.2.2.1 矩阵的基本代数运算这里只简单介绍几类运算,矩阵的左(右)除和矩阵翻转。(1) 矩阵的左除。MATLAB中表示两个矩阵左除所用的运算符为,方程的解可用与的左除表示。倘若为非奇异的方阵,那么方程的解可以表示为。(2) 矩阵的右除。MATLAB中

27、表示矩阵右除的符号为/,相当于求方程的解。当为非奇异方阵时。(3) 矩阵翻转。MATLAB提供了一些矩阵翻转的特殊命令,下面通过实例来查看:【例1-12】通过实例演示矩阵翻转 A=1 2 3;4 5 6;7 8 9A = 1 2 3 4 5 6 7 8 9 B=fliplr(A)B = 3 2 1 6 5 4 9 8 7可见,fliplr命令是完成的矩阵A的左右翻转操作。 C=flipud(A)C = 7 8 9 4 5 6 1 2 3明显,flipud命令执行的是矩阵A的上下翻转操作。此外,MATLAB中还有其他一些对矩阵执行翻转操作的命令,如命令rot90为将矩阵逆时针旋转90o。 D=rot90(A)D = 3 6 9 2 5 8 1 4 71.2.2.2 矩阵的逻辑运算一个数的值为0,则可认为它为逻辑0,否则为逻辑1。如果和均为矩阵,则MATLAB中定义了如下的逻辑运算:1. 矩阵的“与”运算。通常用表示矩阵的与运算。如用表示两个矩阵的与运算,如果两矩阵对应元素处均非0,那么结果元素为1,否则的话结果为0。【例1-13】矩阵的“与”运算 A=0 0 0 0;0 1 1 0;0 1 1 0;0 0 0 0A = 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 B=eye(4)B

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1