4.2.2MATLAB学习笔记之程序设计-程序流程控制(选择结构)

MATLAB程序流程控制-选择结构

选择结构又称为分支结构,它根据给定的条件是否成立,决定程序的运行路线,在不同的条件下,执行不同的操作。

MATLAB用于实现选择结构的语句有if语句、switch语句和try语句。

一、if语句

在MATLAB中,if语句有以下3种格式。

1.单分支if语句。

语句格式如下:

if 条件

语句组

end

其中,条件一般用关系运算或逻辑运算来表示,其结果是一个标量或矩阵。

当结果矩阵非空,且不包含零元素时,该条件成立,否则不成立。

例如,当条件为[1,2;3,4]时,判定条件成立;当条件为[]或[1,2;0,4]时,判定条件不成立

MATLAB中建议条件尽量使用标量,条件的结果为非零时,表示条件成立,零表示条件不成立。

当对标量进行逻辑与运算或者逻辑或运算时,其运算符可以采用&&和||。

当条件成立时,则执行语句组,执行完之后继续执行if语句后面的语句,若条件不成立,则直接执行if语句后面的语句。

2.双分支if语句

语句格式如下:

if 条件

语句组1

else

语句组2

end

当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句后面的语句。

例1 计算分段函数的值。

img

x=input('请输入x的值:');
if x==10
  y=cos(x+1)+sqrt(x*x+1);
else
  y=x*sqrt(x+sqrt(x));
end
y

也可以用单分支if语句来实现,程序如下:

x=input('请输入x的值:');
if x==10
  y=cos(x+1)+sqrt(x*x+1);
end
if x~=10
  y=x*sqrt(x+sqrt(x));
end
y

第一个if语句可以不用,而直接求函数值即可,改用以下程序实现。

x=input('请输入x的值:');
y=cos(x+1)+sqrt(x*x+1);
if x~=10
  y=x*sqrt(x+sqrt(x));
end
y
3.多分支if语句

语句格式如下:

if 条件1

语句组1

else if 条件2

语句组2

else if 条件m

语句组m

else

语句组n

end

例2 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输 出其对应的大写字母;若为数字字符则输出其对应数的平方,若为其他字符则原样输出。

c=input('请输入一个字符:','s');
if c>='A' && c<='Z'
  disp(lower(c))
elseif c>='a' && c<='z'
  disp(upper(c))
elseif c>='0' && c<='9'
  disp(str2double(c)^2)
else
  disp(c)
end
二、switch语句

switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式如下:

switch 表达式

case 结果表1

语句组1

case 结果表2

语句组2

case 结果表m

语句组m

otherwise

语句组n

end

switch子句后面的表达式应为一个标量或一个字符串,case子句后面的结果不仅可以为一个标量或一个字符串,还可以为一个将多个结果用大括号括起来的单元数据。

如果case子句后面的结果表为一个单元数据,则表达式的值等于该单元数据中的某个元素时,执行相应的语句组。

例3 某商场对商品实行打折销售,标准如下(商品价格用price来表示)。

price<200 没有折扣

200≤price<500 3%折扣

500≤price<1000 5%折扣

1000≤price<2500 8%折扣

2500≤price<5000 10%折扣

500Q≤price 14%折扣

输入所售商品的价格,求其实际销售价格。

price=input('请输入商品价格');

switch fix(price/100)
  case {0,1}         %价格小于200
    rate=0;
  case {2,3,4}       %价格大于等于200但小于500
    rate=3/100;
  case num2cell(5:9)    %价格大于等于500但小于1000
    rate=5/100;
  case num2cell(10:24)   %价格大于等于1000但小于2500
    rate=8/100;
  case num2cell(25:49)   %价格大于等于2500但小于5000
    rate=10/100;
  otherwise         %价格大于等于5000
    rate=14/100;
end
price=price*(1-rate)    %输出商品实际销售价格

程序中的 num2cell 函数是将数值矩阵转化为单元矩阵,num2cell(5:9) 等价于{5,6,7,8,9}★

三、try语句

try语句是一种试探性执行语句,为开发人员提供了一种捕获错误的机制,其语句格式如下:

try

语句组1

catch

语句组2

end

try语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给预定义变量lasterr,并转去执行语句组2。如果不出错,则转去执行end后面的语句。

A=input( '请输入A矩阵:');
B=input( '请输入B矩阵:');
try
    C=A*B
catch
    lasterr
end
请输入A矩阵:[1,2,3;4,5,6]
请输入B矩阵:[1,2;3,4;5,6]

C =

    22    28
    49    64

再运行一次程序,运行结果如下:

请输入A矩阵:[1,2,3;4,5,6]
请输入B矩阵:[7,8,9;10,11,12]

ans =

错误使用  * 
内部矩阵维度必须一致。

Matlab学习笔记内容来源于《MATLAB程序设计与应用 第三版》刘卫国主编

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值