概述
一、MATLAB的控制流
与其他平台或语言类似,MATLAB中控制流结构包括:
顺序控制、if-else-end分支结构、switch-case结构、try-catch结构、for循环结构和while循环结构
1.顺序结构
新建一个脚本文件(.m文件)、命名并保存
Python
%计算圆的面积
%r:圆的半径
%S:圆的面积
r = 5;
S = pi * r * r;
fprintf('面积是%fn',S);
1
2
3
4
5
6
%计算圆的面积
%r:圆的半径
%S:圆的面积
r=5;
S=pi*r*r;
fprintf('面积是%fn',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)
最后
以上就是失眠金毛为你收集整理的matlab编程功能,MATLAB自学笔记(十一):MATLAB编程基础2-控制流的全部内容,希望文章能够帮你解决matlab编程功能,MATLAB自学笔记(十一):MATLAB编程基础2-控制流所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复