6-7matlab的程序设计剖析

上传人:今*** 文档编号:107176582 上传时间:2019-10-18 格式:PPT 页数:68 大小:284KB
返回 下载 相关 举报
6-7matlab的程序设计剖析_第1页
第1页 / 共68页
6-7matlab的程序设计剖析_第2页
第2页 / 共68页
6-7matlab的程序设计剖析_第3页
第3页 / 共68页
6-7matlab的程序设计剖析_第4页
第4页 / 共68页
6-7matlab的程序设计剖析_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《6-7matlab的程序设计剖析》由会员分享,可在线阅读,更多相关《6-7matlab的程序设计剖析(68页珍藏版)》请在金锄头文库上搜索。

1、第五章 matlab程序设计, matlab语言称为第四代编程语言,程序简洁、可读性很强而且调试十分容易。,第一节 m文件,用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件 包含matlab语言代码的文件称为m文件,其扩展名为m。 编辑m文件可使用各种文本编辑器。,一、指令模式与M文件,指令驱动模式 通常matlab以指令驱动模式工作,即在matlab 窗口下当用户输入单行指令时,matlab 立即处理这条指令,并显示结果,这就是matlab命令行方式。 命令行操作时,matlab窗口只允许一次执行一行上的一个或几个语句。,例如: x1=0:10

2、 x1 = 0 1 2 3 4 5 6 7 8 9 10 x2=0:3:11 x2 = 0 3 6 9 x3=11.5:-3:0 x3 = 11.5000 8.5000 5.5000 2.5000,x1=0:10,x2=0:3:11,x3=11.5:-3:0 x1 = 0 1 2 3 4 5 6 7 8 9 10 x2 = 0 3 6 9 x3 = 11.5000 8.5000 5.5000 2.5000 在matlab窗口输入数据和命令进行计算时,当处理复杂问题和大量数据时是不方便的。因此应编辑m文件。,命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。 m文件

3、模式 将matlab语句构成的程序存储成以m为扩展名的文件,然后再执行该程序文件,这种工作模式称为程序文件模式。 程序文件不能在指令窗口下建立,因为指令窗口只允许一次执行一行上的一个或几个语句。,二、m文件的创建,m文件的类型是普通的文本文件,我们可以使用系统认可的文本文件编辑器来建立m文件。如dos下的edit,windows的记事本和word等。 具体的创建方法: 在matlab命令窗 口点击file 菜单 new m-file,2. edit-用matlab自带的编辑器编制m文件。 3. 用dos 下edit 编辑器编制m文件。 4. 用word编辑m文件。 M文件的执行: 在命令窗口输

4、入当前工作目录中m文件的文件名 例: Jb.m,m文件编辑器的设定 m文件编辑器可自己设定,设定方法是matlab命令窗口 options 菜单下点击 Edit Preference 选定m文件编辑器。m文件编辑器缺省设置是 c:windowsnotepad.exe 还可设成:c:windowswrite.exe c:windowscommand c:program fileofficewinword.exe,三. m文件的类型 m文件的语法类似于c语言,但又有其自身特点。它只是一个简单的ASCII码文本文件,执行程序时逐行解释运行程序,matlab是解释性的编程语言。 m文件有两类独立的m文

5、件 称命令文件 可调用m文件 称函数文件 (1). 命令文件 简单的m文件 命令文件实际上是一串指令的集合,与在命令窗口逐行执行文件中的所有指令,其结果是一样的。没有输入输出参数。,命令文件包括两部分:注释文件和程序文件 %RANK Number of linearly independent rows or columns. % K = RANK(X) is the number of singular values of X % that are larger than MAX(SIZE(X) * NORM(X) * EPS. % K = RANK(X,tol) is the number

6、 of singular values of X that % are larger than tol. % Copyright (c) 1984-94 by The MathWorks, Inc. s = svd(x); if (nargin = 1) tol = max(size(x) * max(s) * eps; end r = sum(s tol);,程序部分,(2).matlab内置函数文件 matlab自定义的函数文件称内置函数文件 调用内置函数的方法:使用函数名并给出相应的入口、出口参数即可。 例如:sin.m函数用type sin查不到。 调用格式:y=sin(2*x) 实际

7、应用中: x=0:2*pi/180:2*pi; y=sin(2*x) plot(x,y),又如 sqrt(x) 求x的平方根 abs(x) 求x的绝对值 det(a) 求行列式的值 等等。matlab拥有大量的内置数学函数,供我们在数值运算和符号运算中调用。 (3). 函数m文件 需要输入变量,返回输出变量 matlab用户可以根据需要编辑自己的m文件,它们可以像库函数一样方便的调用,从而极大地扩展了matlab 的能力。,对于某一类特殊问题,如创建了许多m函数文件,则可形成新的工具箱。 这种用matlab语言创建定义新的matlab函数的功能,正体现了matlab语言强大的扩展功能。,函数m

8、文件的格式: 函数文件的第一行为函数申明语句,格式为: function 输出变量 = 函数名(输入变量) 注释说明语句段 程序语句段 特定规则: 函数m文件第一行必须以单词function作为引导词,必须遵循如下形式: function =() m文件的文件名必须是 .m。 程序中的变量均为局部变量,不保存在工作空间中。 其变量只在函数运行期间有效。,例 函数文件 function sa = circle(r) % r 指定半径的数值 % sa 圆面积 sa=pi*r*r 函数文件调用 x=10; S=circle(x),(4). 系统文件s函数 用于描述系统运动的专用函数,是特殊的 m 文

9、件。 s 函数有3类: 由simulink结构图自动创建 可用c语言程序设计mex文件 直接定义 用函数m文件编写 s函数一旦创建,即可在框图中使用,也可在文件中调用。,S函数的调用格式 sys, x0=sfunction( t, x, u, flag) S函数与函数m文件类似,只是输入、输出变量是限定的。,系统状态,状态初值,用户定义的系统,当前时刻,当前状态值,当前输入值,标志量,(5). 函数句柄 函数句柄是matlab6特有的语言结构,其优点: 方便地实现函数间互相调用 兼容函数加载的所有方式 拓宽子函数包括局部函数的使用范围 提高函数调用的可靠性 减少程序设计中的冗余 提高重复执行的

10、效率 数组、结构数组、细胞型数组结合定义数据,函数句柄的创建和显示 函数句柄的定义只需在提示符后添加相应函数的函数名 f_h=plot f_h = plot 函数句柄的内容通过functions显示 functions(f_h) ans = function: plot type: overloaded file: MATLAB built-in function methods: 1x1 struct,函数句柄的调用和操作 可通过函数feval进行函数句柄的调用 feval(函数句柄) f_h1=peaks feval(f_h1) feval(函数句柄,参数列表) f_h=plot feva

11、l(f_h,0:10,0:10),函数句柄与函数名字符串转换 str2func 函数名字符串转换函数句柄 funh=str2func(det) funh = det func2str 函数句柄转换函数名字符串 func2str(funh) ans = det,第二节 运算法 一、关系运算符,关系运算符在MATLAB编程中有很重要的作用。 a、小于( 15 ans = 1,当A和B为矩阵时,命令A a=1 2 3;4 5 6;7 8 9; b=9 8 7;6 5 4;3 2 1; ab ans = 1 1 1 1 0 0 0 0 0,另外,矩阵还可以与一个标量比较,b、大于() c、小于等于(=

12、) e、等于(=) f、不等于(=) 以上5个关系运算符的使用方式与规则与小于完全相同。,abc,二、逻辑运算符,a、逻辑与(&) 命令A&B将A与B进行逻辑与运算。如果A、B均非零,则返回结果为1,否则返回0。 当A、B为矩阵时,命令A&B将矩阵A、B的对应元素作逻辑与运算,并返回一个和A、B维数相同的矩阵。如果A、B的对应元素均为非零,则返回1作为对应元素,否则返回0。这里要求A、B的维数相同,或A、B中至少有一个为标量。,b、逻辑或(|) 命令A|B将A与B进行逻辑或运算。如果A、B中有一个非零,则返回结果为1,否则返回0。 当A、B为矩阵时,命令A|B将矩阵A、B的对应元素作逻辑或运算

13、,并返回一个和A、B维数相同的矩阵。如果A、B的对应元素中有一个非零,则返回1作为对应元素,否则,返回0。,c、逻辑异或(xor) 命令xor(A,B)将A与B进行逻辑异或运算。如果A、B中一个非零,一个为零,则返回结果为1,否则,返回0。 当A、B为矩阵时,命令xor(A,B)将矩阵A、B的对应元素作逻辑异或运算,并返回一个和A、B维数相同的矩阵。如果A、B的对应元素中有一个非零,一个为零,则返回1作为对应元素,否则返回0。,d、逻辑非() 命令A对A进行逻辑非运算。如果A非零,则返回结果为0,否则,返回1。 当A为矩阵时,命令A将矩阵A元素作逻辑非运算,并返回一个和A维数相同的矩阵。如果A

14、的元素为非零,则返回0作为对应元素,否则,返回1。,第三节 Matlab结构化程序设计,计算机编程语言允许根据决策结构控制命令执行流程。控制流极其重要,因为它使用过去的计算影响将来的运算。 Matlab提供若干种决策或控制流结构,包括for循环、while循环和if-else-end结构等 这些结构经常包含大量的Matlab命令,故经常出现在M文件中,而不是直接加在Matlab提示符下。,matlab语言的程序结构与其它高级语言是一致的,分为: 1.顺序结构 - 依次顺序执行程序的各条语句 2.循环结构 - 被重复执行的一组语句,是计算机解决问题的主要手段。循环语句主要有: for end w

15、hile end 3. 分支结构-根据一定条件来执行的各条语句。分支语句主要有: if else end swith try catch,一、matlab的程序结构,(1)for循环 for循环允许一组命令以固定的和预定的次数重复。for循环的语法为: for i = 表达式 (表达式为一个向量) 可执行语句 end 在for和end语句之间的可执行语句按数组中的每一列执行一次;在每一次迭代中,x被指定为数组的下一列,即在第n次循环中,x=array(:,n)。例如: for n=1:10 x(n)=sin(n*pi/10); end x,for循环不能用for循环内重新赋值循环变量n的方式来

16、终止;例如 for n=1:10 x(n)=sin(n*pi/10); n=10; end x 语句1:10是一个标准的Matlab数组创建语句 a=1:10 b=1:2:10 c=1:-1:10 d=3:1,for循环可以嵌套 for n=1:5 for m=5:-1:1 a(n,m)=n2+m2; end end disp(a); %显示数组a 当有一个等效的数组方法来解决给定问题时,应避免用for循环 n=1:10 x=sin(n*pi/10),为了得到最大速度,在for循环(while)循环被执行之前,应预先分配数组。(避免每次循环都重新分配内存) x=zeros(1,10); for n=1:10 x(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号