这次课程我们将一起学习Matlab的程序控制,这里面的主要内容有:
顺序控制
分支结构
- 条件语句 (if-else-end)
- 开关语句 (switch-case-end)
- 循环语句 (for-end && while)
顺序控制
顺序控制,其实很好理解,就是程序从第一行运行,一直运行到最后一行。matlab语言算是一门很古老的语言了,在matlab创立的时候,面向对象这个概念还不是很清晰,而且由于matlab本身就是用来解决数学问题的,并不需要面向对象那么复杂的概念,所以matlab算是一门面向过程的语言。尽管经历了这么多年的修改,现在也有了面向对象的意思,但是其实还是很少用到。
这里我么讲的顺序控制主要是分支结构对应来讲的。 比如我们计算一系列的公式的时候,我们会一个一个的顺序计算这些公式,这个时候根本就不需要分支结构,所以程序自然也就是顺序控制了。
这个式子在计算的时候,就可以直接让程序顺序执行就可以了。
分支结构
我们重点还是来讲一下分支结构。
第一种分支结构:条件语句 (if-else-end)
if-else-end
clear;clc; key=3; if key==1 fprintf ("key == 1 \n"); else fprintf ("key == ? \n"); end
ANS:[key == ? ]
if-end-if-end
clear;clc; key=2; if key==1 fprintf ("key == 1 \n"); end if key==2 fprintf ("key == 2\n"); end
ANS:[key == 2]
if-elseif-end
clear;clc; key=2; if key==1 fprintf ("key == 1 \n"); elseif key==2 fprintf ("key == 2\n"); end
ANS:[key == 2]
第二种分支结构:开关语句 (switch-case-end)
开关结构其实就是一种if-else的变形,原理很简单,就像是苹果从书上往下掉,然后一个人拿了几个口袋去接苹果,每个口袋都有条件,比如第一个口袋只能装红色的苹果,第二个口袋只能装绿色的苹果,第三个口袋可以装介于两种颜色之间的苹果。
clear;clc;
key=3;
switch key
case{1,2}
fprintf ("key等于 1 或者 2 。\n");
case{3,4}
fprintf ("key等于 3 或者 4 。\n");
otherwise
fprintf ("我也不知道key等多少!");
end
ANS:[key等于 3 或者 4 。]
第三种分支结构:循环语句 (for-end && while)
第三种结构可以说是最重要的结构了。之所以重要,是因为使用很广泛。当我们在使用matlab时,很多时候需要遍历某些区间,这个时候就需要使用for循环或者while循环。说句实话,我觉得在任何编程语言中,for和while循环都是通用的,这个说法很不严谨,所以课本上几乎是见不到的,哈哈。但是不行你仔细想想启示就是那么回事请。接下来给出几个for循环和while循环的例子,欢迎参考。
- for-end
clear;clc;
for n=1:10
fprintf ("%d ",n);
end
fprintf ("\n");
ANS:[1 2 3 4 5 6 7 8 9 10 ]
for-for-end-end
clear;clc; for m=1:2 for n=1:4 fprintf ("%d ",n); end fprintf ("\n"); end
ANS:
[1 2 3 4
1 2 3 4 ]- 这里我顺便讲一个for循环的小技巧。比如说我们现在需要一个数组是1 3 5 7 9,然后用这几个数字去遍历,这个时候我们就可以把for循环写成以下形式:
clear;clc;
for n=1:2:10
fprintf ("%d ",n);
end
fprintf ("\n");
ANS:[1 3 5 7 9 ]
- while循环
clear;clc;
count=0;
while count<10
fprintf ("%d ",count);
count=count+1;
end
ANS:[0 1 2 3 4 5 6 7 8 9]
这里还有关于程序控制的continue、break等关键字,有程序设计基础的都很好理解,这里就不再赘述了。之所以讲了上面的程序控制语句,是因为matlab更像是一种命令行的形式更其他的编程语言很不相同,就连python都存在太多不同。每个句子结束没有冒号这个特点我就适应了很久。其实学着学着还是挺有趣的。