天天看点

《MATLAB图像处理超级学习手册》一一2.9 MATLAB程序设计

本节书摘来自异步社区出版社《matlab图像处理超级学习手册》一书中的第2章,第2.9节,作者:matlab技术联盟 , 张岩 更多章节内容可以访问云栖社区“异步社区”公众号查看。

matlab图像处理超级学习手册

在matlab中,提供了很多程序流程控制语句,如数据的输入输出、顺序结构、判断语句、分支语句、循环语句以及其他流程控制函数。

2.9.1 数据的输入和输出

matlab中提供的用于数据输入和输出的函数分别为input函数和disp函数,下面将对其进行介绍。

1.数据的输入

在matlab中,input函数用于实现数据的输入,该函数的调用格式为:

其中,提示信息是一个字符串,用于提示用户输入什么样的数据。

如果在input函数调用时采用's'选项,则允许用户输入一个字符串。例如,想输入一个人的姓名,可采用如下命令:

2.数据的输出

在matlab中,disp函数用于实现数据的输出,该函数的调用格式为:

其中输出项既可以为字符串,也可以为矩阵。

当用disp函数显示矩阵时,将不显示矩阵的名字,而且其格式更紧密,且不留任何没有意义的空行。

【例2-26】求一元二次方程ax2+bx+c=0的根。

2.9.2 顺序结构

顺序结构是最简单的程序结构,系统在编译程序时,按照程序的物理位置顺序执行。这种程序的优点是容易编制,缺点是结构单一、能够实现的功能有限。例如:

2.9.3 判断语句

在matlab中,判断语句可以使程序中的一段代码只在满足一定条件时才执行。if与else或elseif连用,偏向于是非选择,当某个逻辑条件满足时执行if后的语句,否则执行else语句。

1.结构为if…end

当程序只有一个判断语句时,可以选择if…end结构,此时程序结构为:

只有一个判断语句,其中的表达式为逻辑表达式,当表达式为真时,执行相应的语句,否则,直接跳到下一段语句。语句中的end是决不可少的,没有它,在逻辑表达式为0时,就找不到继续执行程序的入口。

【例2-27】判断输入的两个参数a和b是否都大于0,是则返回“a和b都大于0”,否则不返回,程序最后返回“否”。

disp('否');

2.结构为if…else…end

当程序有两个选择时,可以选择 if…else…end 结构, 此时程序结构为:

当判断表达式为真时,执行程序块1,否则执行程序块2。

【例2-28】判断输入的两个参数a和b是否都大于0,是则返回“a和b都大于0”,如果不全大于0,则显示“a和b不全都大于0”。

下面的例子为分段函数值的计算。

3.结构为if…elseif…else…end

当程序的判断包含多个选择时,可以采用if…elseif…else…end结构,此时程序结构为:

其中,可以包含任意多个 elseif 语句。

【例2-29】判断输入学生成绩的所属等级:60以下不合格,60~70中等,70~89良好,90以上优秀。

2.9.4 分支语句

在matlab 中,还提供了的另一种多选择语句,即分支语句。分支语句的结构为:

其中,分支语句为一个变量(数值或者字符串变量),如果该变量的值与某一条件相符,则执行相应的语句,否则,执行 otherwise 后面的语句。在每一个条件中,可以包含一个条件语句,也可以包含多个条件,当包含多个条件时,以单元数组的形式表示条件。

【例2-30】任意底的对数的实现。

【例2-31】某商场对顾客所购买的商品实行打折销售,标准为:小于200(没有折扣),200~500(5%折扣),500~1 000(8%折扣),1 000~2 500(15%折扣),2 500~5 000(20%折扣),大于等于5 000(25%折扣)。输入所售商品的价格,求其实际销售价格。

2.9.5 for循环语句

在matlab中,for语句调用的基本格式如下:

其中,a为循环体。

此语句表示把语句组a反复执行n次。循环次数n(需要预先指定)为:n=1+(终值-初值)/增量。在每次执行时程序中的index的值按“增量”增加。

【例2-32】用循环求解 1+2+…+99+100。

《MATLAB图像处理超级学习手册》一一2.9 MATLAB程序设计

2.9.6 for语句的嵌套

for语句的嵌套也称为循环的嵌套,或称为多重循环结构,是指一个循环结构的循环体又包括一个循环结构。

【例2-33】建立一个100阶数组,数组中的每一个元素a(k, n)满足a(k, n)=1/(k+n-1)。

2.9.7 while循环语句

在matlab中,while 语句用于将相同的程序块执行多次(次数不需要预先指定),当条件表达式为真时,执行程序块,直到条件表达式为假。

while 语句的结构为:

【例2-34】用循环求解最小的m,使其满足sumlimits_{i = 1}^m {i > 100} 。

继续阅读