第六讲-Matlab控制流_第1页
第六讲-Matlab控制流_第2页
第六讲-Matlab控制流_第3页
第六讲-Matlab控制流_第4页
第六讲-Matlab控制流_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Matlab控制流量。1.循环结构的for循环结构的语法是:forx=array(命令)end,其中for指令后面的变量x称为循环变量,for和end之间的group命令称为循环体。循环体重复执行的次数由for指令后面的数组中的列数决定。换句话说,循环变量依次取数组的每一列,循环体对每个变量值执行一次。简单for循环的一个示例。fori=1:10%i需要1,2,10 x(i)=i依次;%对于每个I值,由指令形成的循环体结束被重复执行;X%需要在操作后显示数组x的值x=12345678910:循环不会被中断,因为循环变量在循环体中被重置;表达式中的数组后为可以是任何合法的Matlab数组;循环结构可以嵌套。为了获得高效的代码,应尽可能提高代码的向量化程度,避免循环结构。为了获得高效的代码,在循环指令之前,应该尽可能多地预定义数组。while循环结构的语法是:while表达式(命令)结束while和end之间的“组命令”称为循环体。当Matlab遇到while指令时,它首先检测表达式的值。如果其值在逻辑上为真(非零),则执行group命令。当执行组命令时,继续检测表达式的值,如果表达式值仍然为真,则循环执行组命令;一旦表达式值为假,循环结束。斐波纳契数列的元素符合斐波纳契法则:还有。现在要求数组中的第一个元素大于10000。a(1)=1;a(2)=1;I=2;而a(I)8 sums=数字* 0.95 *成本;结束,求和=114.0000示例4使用for循环指令查找斐波那契数组中大于10000的第一个元素。n=100a=1(1,n);for I=3: na(I)=a(I-1)a(I-2);ifa(i)=10000a(i),break%跳出它所在的第一级循环结束;结束,ians=10946i=21,4,开关盒结构开关盒指令的一般语法结构如下:switchexex是标量或字符串casetest1(命令1)当ex等于test1时,执行组命令1。然后跳出结构案例test2.casestk(命令)当ex等于testk时,执行命令集k,然后跳出结构,否则指令可能不存在(命令)当表达式不等于所有先前的检测值时,执行命令集结束,当遇到开关结构时,Matlab依次将表达式的值与每个case指令后的检测值进行比较。如果比较结果为假,将再次比较下一个检测值,一旦比较结果为真,Matlab将执行相应的一组命令,然后跳出结构。如果所有的比较结构都是假的,即表达式值和所有的检测值不相等,那么Matlab将一个接一个地执行一组命令,因此可以看出,上述结构保证了至少一组命令将被执行。开关指令后面的表达式应该是标量或字符串。对于标量表达式,比较如下:表达式=检测值一。对于字符串,Matlab将调用函数strcmp来实现比较:strcmp(表达式,检测值一)。strcmp用于比较两个字符串是否完全相同,例如:a= student学生;Strcmp(a,b)ans=1返回1,表示两个字符串相同;否则,case指令后的检测值不仅可以是标量值或字符串,还可以是单元格数组。如果检测到的值是一个单元格数组,Matlab会将表达式的值与单元格数组中的所有元素进行比较。如果单元格数组中某个元素的值等于表达式的值,则Matlab认为比较结果为真,从而执行与检测值相对应的一组命令。细胞数组是MATLAB中一种独特的数据类型和数组。它的内部元素可以属于不同的数据类型。从概念上讲,它可以被认为与C语言中的结构和C语言中的对象非常相似。在matlab中,char(n)被用来定义,当然,最基本的定义是环绕定义,比如定义一个字符变量a并赋值,然后定义一个长整数b并赋值.最后用大括号将c=a,b包装成单元格c,当然,进一步包装c是合法的,如d=a,b,c, ABC ,123。学生成绩管理用于演示切换结构的应用。清除;分区百分比:满分(100)、优(90-99)、良(80-89)、及格(60-79)、不及格(60)分数=1:10;a i =89 ibi=79 i。c i =69 id i =59 i结束;c=d,c;姓名=杰克,玛丽,彼得,罗斯,汤姆;马克=72,83,56,94,100。秩=单元格(1,5);%创建一个包含三个字段的5元素框架数组S=STRUCT(名称、名称、标记、标记、等级、等级);%根据学生的分数,找出相应的等级为i=1:5的开关(一)。标记CAS e100s (I)。等级=满分;案例(一)。等级=优秀;案例b(I)。等级=好;CasecS(i)。等级=通过;其他(I)。等级=失败;结束时,%将打印出学生的姓名、分数、注册等信息。显示(学生姓名、分数、年级);disp()for I=1:5;显示(S(i)。名称,空格(6),num2str(S(i)。标记)、空白(6)、S(i)。等级);结束;Matlab的切换指令不同于C语言的切换指令。当matlab检测到某个检测值等于表达式的值时,它将执行相应的一组命令。执行后,它将自动跳出开关结构,而不使用中断指令。try-catch指令的语法结构如下:try(commands1) group命令1总是被执行。如果它是正确的,那么catch(命令2)将跳出这个结构。仅当组命令1中存在执行错误时,才会执行组命令2。仅当执行组命令1时,在Matlab中出现错误时,才会执行结束组命令2。可以调用lasterr函数来查询错误的原因。如果函数lasterr作为空字符串运行,则成功执行了group命令1。执行组命令2时出错,Matlab将终止该结构。示例5:5次捕捉结构的应用:引用魔方数组的行。当“行下标”超过魔方阵列的最大行数时,它将变为引用最后一行并显示“错误”警告。清除,N=4;a=魔法(3);%将魔方数组的3行3列设置为A_N=A(N,)%取第N行元素CaptA _ END=A(END,)%如果取A(N,)时出错,则取最后一行的endlasterr % A,以显示出错的原因A _ END=492 ANS=IndexeExedsMatrixDimensions。6.控制流的其他常用指令1)返回指令通常,在转移的功能执行后,Matlab会自动将控制转移到主转移功能或指令窗口。如果返回指令被插入到传递的函数中,可以强制Matlab完成函数的执行和控制的传递。2)输入和键盘指令(1)输入指令将Matlab的“控制”暂时交给用户。之后,用户通过键盘输入数值、字符串或表达式,并通过“输入”将键入的内容输入工作区,然后将“控制”返回给Matlab。常用格式如下:v=input(message )将用户的输入分配给变量vv=input(message , s ),并将用户的输入作为字符串分配给变量v。message是要在屏幕上显示的字符串,这是必不可少的。对于第一种调用格式,用户可以输入各种形式的数据,如数值、字符串、单元格数组等。对于第二种调用格式,无论键入什么,变量V总是以字符串的形式分配。(2)键盘当程序遇到键盘时,Matlab对键盘进行“控制”,用户可以从键盘输入各种合法的Matlab指令。只有当用户使用返回指令结束输入时,“控制”才会返回给程序。它不同于输入,因为它允许输入任意数量的Matlab指令,而输入只能输入分配给变量的“值”,即数值、字符串或单元格数组。3)YeinputStruction YeinputStruction是一个智能输入指令,它提供一个默认输入值,并可以检查3)Yeinput范围。调用形式如下:V=是输入(“提示”,默认,可能)。该指令涉及用户和Matlab之间的交互,因此不能在笔记本上运行。“提示”是文本提示,默认值是“值”的默认设置,可能是可选“值”的范围。,4)暂停指令暂停执行文件,等待用户按任意键继续暂停(n)继续执行前暂停n秒,5)中断指令中断指令导致while,对于包含该指令的指令终止。通过使用break指令,它不像等待循环的自然结束,而是根据是否满足循环中设置的其他条件来决定是否退出循环。6)错误和警告命令在写入M文件时,常见的警告命令有:错误(“消息”)显示错误消息,在终止程序错误陷阱发生后,程序是否继续的两位开关lasterr显示由Matlab自动判断的最新错误原因并终止程序警告(“消息”)。程序继续运行。lastwarn显示由Matlab自动给出的最新警告。程序继续运行。细胞的基本成分是细胞。数组中的每个单元格都是相等的,只能通过以下标记来区分。单元格可以存储任何类型和大小的数组,如任何维数值数组、字符串数组、符号对象等。并且同一单元格数组中每个单元格的内容可以不同。像数字数组一样,单元格数组具有无限的维数,可以是一维、二维或更高,但一维单元格数组使用得最频繁。单元阵列到单元也有两种寻址方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论