matlab编程功能,MATLAB自学笔记(十一):MATLAB编程基础2-控制流

一、MATLAB的控制流

与其他平台或语言类似,MATLAB中控制流结构包括:

顺序控制、if-else-end分支结构、switch-case结构、try-catch结构、for循环结构和while循环结构

1.顺序结构

新建一个脚本文件(.m文件)、命名并保存

Python

%计算圆的面积

%r:圆的半径

%S:圆的面积

r = 5;

S = pi * r * r;

fprintf('面积是%f\n',S);

1

2

3

4

5

6

%计算圆的面积

%r:圆的半径

%S:圆的面积

r=5;

S=pi*r*r;

fprintf('面积是%f\n',S);

点击运行标志或按F5,此时返回命令行窗口,可以看见如下字样

Python

>> TEMP

面积是78.539816

1

2

>>TEMP

面积是78.539816

TEMP是我刚才创建的文件名,接着下面一行是运行结果

2.if-else-end分支结构

常见的三种用法如下

Python

if expression

commands

end

if expression

commands1

else

commands2

end

if expression1

commands1

elseif expression2

commands2

...

else

commandsn

end

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

ifexpression

commands

end

ifexpression

commands1

else

commands2

end

ifexpression1

commands1

elseifexpression2

commands2

...

else

commandsn

end

举例如下,判断一个数字是否大于0.5:

Python

Rand_a = rand(1);

if Rand_a > 0.5

Rand_b = Rand_a

else

Rand_b = 1-Rand_a

end

1

2

3

4

5

6

Rand_a=rand(1);

ifRand_a>0.5

Rand_b=Rand_a

else

Rand_b=1-Rand_a

end

运行结果如下:

Python

>> TEMP

Rand_b =

0.8147

1

2

3

4

5

>>TEMP

Rand_b=

0.8147

3.switch-case结构

在脚本文件中写入如下代码,点击运行

Python

num = input('enter''num'':');

switch num

case 1

data = 'Monday'

case 2

data = 'Tuesday'

case 3

data = 'Wednesday'

case 4

data = 'Thursday'

case 5

data = 'Friday'

case 6

data = 'Saturday'

case 7

data = 'Sunday'

otherwise

data = 'Wrong!!'

end

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

num=input('enter''num'':');

switchnum

case1

data='Monday'

case2

data='Tuesday'

case3

data='Wednesday'

case4

data='Thursday'

case5

data='Friday'

case6

data='Saturday'

case7

data='Sunday'

otherwise

data='Wrong!!'

end

返回命令行窗口

Python

>> TEMP

enter'num':

1

2

>>TEMP

enter'num':

例如输入数字5,点击回车

Python

>> TEMP

enter'num':5

data =

Friday

1

2

3

4

5

6

>>TEMP

enter'num':5

data=

Friday

注:与C语言相比,MATLAB中的switch结构不用输入冒号分号,也不用default但是用otherwise

input函数表示输入,当M文件运行到此处时会暂停,等待来着命令行窗口的输入信息,输入完成后要点击‘Enter’

4.try-catch结构

try-catch结构的具体用法如下:

Python

try

command1

catch

command2

end

1

2

3

4

5

try

command1

catch

command2

end

只有当MATLAB执行命令组1错误时,才会执行命令组2,即命令组2是命令组1的备用程序

当命令组1出错时,可用lasterr函数函数查询出错原因。若返回空字符串,则表明没有错误

若命令组1和2都有错,则MATLAB会终止该结构

举例如下,在M文件中输入以下程序

Python

num = 6;

Mat = magic(4)

try

Mat_num = Mat(num,:)

catch

Mat_end = Mat(end,:)

end

lasterr

1

2

3

4

5

6

7

8

num=6;

Mat=magic(4)

try

Mat_num=Mat(num,:)

catch

Mat_end=Mat(end,:)

end

lasterr

点击运行,返回命令行窗口

Python

>> TEMP

Mat =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 15 1

Mat_end =

4 14 15 1

ans =

索引超出矩阵维度。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

>>TEMP

Mat=

162313

511108

97612

414151

Mat_end=

414151

ans=

索引超出矩阵维度。

5.for循环结构

举例如下,求x = sin(nkpi/360)的值,其中 n 属于1 : 10, k属于1 : 4:

Python

x = [];

for n = 1:1:10

for k = 1:1:4

x(n,k) = sin((n*k*pi)/360);

end

end

x

1

2

3

4

5

6

7

x=[];

forn=1:1:10

fork=1:1:4

x(n,k)=sin((n*k*pi)/360);

end

end

x

运行结果如下

Python

>> TEMP

x =

0.0087 0.0175 0.0262 0.0349

0.0175 0.0349 0.0523 0.0698

0.0262 0.0523 0.0785 0.1045

0.0349 0.0698 0.1045 0.1392

0.0436 0.0872 0.1305 0.1736

0.0523 0.1045 0.1564 0.2079

0.0610 0.1219 0.1822 0.2419

0.0698 0.1392 0.2079 0.2756

0.0785 0.1564 0.2334 0.3090

0.0872 0.1736 0.2588 0.3420

1

2

3

4

5

6

7

8

9

10

11

12

13

14

>>TEMP

x=

0.00870.01750.02620.0349

0.01750.03490.05230.0698

0.02620.05230.07850.1045

0.03490.06980.10450.1392

0.04360.08720.13050.1736

0.05230.10450.15640.2079

0.06100.12190.18220.2419

0.06980.13920.20790.2756

0.07850.15640.23340.3090

0.08720.17360.25880.3420

注:程序中分号的有无直接影响着输出内容的多少

MATLAB中for循环不用加括号,但是每一级for循环都需要对应end指令

冒号’:’是一种基础符号,1:10表示间隔为1、从1到10的一个数组;1:2:10是间隔为2的数组

6.while循环结构

同其他语言一样,while循环主要用在一个逻辑条件下重复执行且次数不定的条件,这是它与for循环的最大区别。其基本用法如下

Python

while expression

commands

end

1

2

3

whileexpression

commands

end

举例如下,求解1:100的和

Python

i = 1;

sum = 0;

while i<101

sum = sum+i;

i = i+1;

end

sum

1

2

3

4

5

6

7

i=1;

sum=0;

whilei<101

sum=sum+i;

i=i+1;

end

sum

结果如下

Python

>> TEMP

sum =

5050

1

2

3

4

5

>>TEMP

sum=

5050

二、控制流的常用指令

1.return指令

通常,在被调用函数执行完之后,MATLAB会自动将控制权移交给主函数或者命令行(Commands)窗口

但是如果在被调用函数中插入return指令,可以强制MATLAB执行该函数并把控制权转移

2.input和keyboard指令

input指令会将MATLAB的控制权暂时转交给用户,用户通过键盘输入数值、字符串、表达式等,并按‘Enter’键将内容输送到工作区

Value = input(‘message’);将用户输入的内容输入给变量Value。可以输入数值、字符串等各种形式的数据

Value = input(‘message’,’s’):将用户输入的变量以字符串的形式输送给变量。无论输入什么格式的数据,都会以字符串的形式赋值给变量

指令中‘message’指的是显示在屏幕上的字符串

keyboard指令会将控制权交给用户,用户可以通过键盘输入各种合法的MATLAB指令。只用当用户输入完成,并输入return时,控制权才会返回给MATLAB、

input和keyboard指令的不同之处在于:keyboard指令允许输入任意多个MATLAB指令,而input指令只允许用户输入赋值给变量的‘值’

3.yesinput指令

yesinput指令是一个只能输入的指令,它提供的输入值是一个默认量,并可以对输入范围进行检查,其用法如下

value = yesinput(‘Prompt’,Default,Possib)

yesinput指令涉及用户与MATLAB之间的交互,因此无法在notebook程序中运行

Prompt为文字提示,Default为设置的默认值,Possib为可选项

当yesinput指令运行后,若用户不输入任何值,则变量value将接收默认值

4.pause指令

pause指令的功能为控制文件的暂停与恢复

pause:暂停执行文件,等待用户按任意键继续

pause(n):在继续执行文件之前,暂停n秒

5.continue指令

continue语句把控制传给下一个在其中出现的if或while循环的迭代,忽略任何循环体中保留的语句。

在循环嵌套中,continue把控制传给下一个for或while循环所嵌套的迭代

Python

fid = fopen('magic.m','r');

count = 0;

while ~feof(fid)

line = fgetl(fid);

if isempty(line) | strncmp(line,'%',1)

continue

end

count = count +1;

end

disp(sprintf('%d lines',count))

1

2

3

4

5

6

7

8

9

10

fid=fopen('magic.m','r');

count=0;

while~feof(fid)

line=fgetl(fid);

ifisempty(line)|strncmp(line,'%',1)

continue

end

count=count+1;

end

disp(sprintf('%d lines',count))

运行结果:

Python

>> TEMP

31 lines

1

2

>>TEMP

31lines

5.break指令

在for或while循环中,有时并不需要运行到最后一步循环,用户就已经得到了想要的结果,此时可用break指令来对其循环进行终止

Python

a(1) = 1; a(2) = 1;

n = 1000;

for i = 3:n

a(i) = a(i-1) + a(i-2);

if(a(i) > 9999)

[i a(i)]

break

end

end

1

2

3

4

5

6

7

8

9

a(1)=1;a(2)=1;

n=1000;

fori=3:n

a(i)=a(i-1)+a(i-2);

if(a(i)>9999)

[ia(i)]

break

end

end

运行结果:

Python

>> TEMP

ans =

21 10946

1

2

3

4

5

>>TEMP

ans=

2110946

赞赏作者

喜欢 (0)or分享 (0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值