您的当前位置:首页正文

MATLAB 入门教程四:控制流

来源:个人技术集锦
MATLAB 入门教程四:控制流 取自http://www.matlabsky.com/forum-viewthread-tid-17680-fromuid-88314.html

象许多计算机语言一样,Matlab也有控制流语句。控制流语句使Matlab脱离了仅限于简单计算的水平,使它成为完全高水平的矩阵运算语言。

介绍MATLAB的几个最基本的选择和循环控制语句,if , elseif , switch , while和for语句,这些语句的格式和作用与一些编程语言比如C语言差不多,也很容易理解。编程的时候就不能在命令窗口中直接一行行的输入,需要建立一个m文件,在文件里写你需要的代码,然后运行。

While语句:

作用:允许一个语句或一组语句在逻辑条件控制下重复一个不确定的次数。

你必须给while语句指定一个结束的条件,才能使循环结束,否则他将一直循环下去。 while 循环的一般格式为: while 表达式 语句组 end

现在用while语句来求1到100所有数字的和。代码如下:       

sum=0 k=1;

while k<=100; sum=sum+k; k=k+1; end sum

复制代码

运行后,sum最终的值为5050(是不是和手算的一样呢??)

下面再用一个简单的问题来说明while 循环的用法。求解阶乘n!具有100位数字的整数n 是多少? 

n=1;

   

while prod ( 1 : n ) < 100; n=n+1; end n

复制代码

结果为n=5。 5x4x3x2x1=120

若n=6,则6!=720,非100位数字

for语句:

语法是在for的后面指定循环变量从哪到哪,每执行一次循环体后,循环变量就加1,一直循环到你指定的终点。语法是for k=1:10,在没有中断命令的情况下,这个循环要执行十次,这样,我们就可以很清楚的控制循环的次数,所以,在应用中我们基本上是使用for语句来执行循环。 现在用for语句来求第一个面的问题,代码如下:     

sum=0; for k=1:100; sum=sum+k; end sum

复制代码

用for语句比while要简单了一些是吧!还有一个循环可以嵌套:再举俩个例子。      

for i=1:5; x(i)= 2*i; end x

for i=1:5; for j=1:3;

   

y(i, j)= i*j; end end

y比较产生的x和y值你就可以理解什么是循环可以嵌套啦!

复制代码

If和else语句:

一般格式如下 If 条件语句 表达式1 else 表达式2 end

例子,现在我们要对下面这个向量进行处理: 1 2 3 4 5 6 7 8 9 让它变成:

1 2 3 4 5 4 3 2 1        

for k=1:9; if k<=5; a(k)=k; else; a(k)=10-k; end end a

复制代码

 else if语句

一般格式如下: If 条件语句1 表达式1

else if 条件语句2 表达式2 else 表达式3 end

下面我们来建立一个具有饱和特性的函数

建立一个名字为f的m文件,代码如下            

function F=f(t) if t>=2 F=40 else if t>1 F=30 else if t>0 F=20 else F=10 end end end

复制代码

然后可以指定一个数t,在命令窗口中对f(t)进行验证。小小的提示一下,这里用到MATLAB里调用函数的功能。简单的讲一下吧。 1.首先把所有的函数都写在同一M文件里。

2.在这一M文件里的各个函数可以相互调用。

以上面的函数为例,新建一M文件,文件名:f.m 在M文件里写了函数F=f(t)

函数中,其中function是关键字,固定的不用更改。

F=f(t)是函数名,你可以另取名字,不过为了和题目一致故取名为F=f(t) (if ,else if)等这些是参数,要符合基本格式就行。

定义函数

function xxx(函数名)【F=f(t)】 xxxx %在这写函数的代码

调用函数

要调用上面定义的函数怎么办呢?

只需写xxx(函数名),以我们的例子我里呢,假如我想知道t=2时F值的话,要写F=f(2)。 这样就可以得到F=40了。

最后,终于到最后了

来看一下switch-case语句:

当case后的选择判断值与swich条件匹配时就执行此case的语句,如果所有的case不于swich条件匹配就执行oterwise后的语句,下面的例子能说明这个问题:     

A=1 switch A case -1 disp('负数') case 0

     

disp('零') case 1 disp('正数') otherwise disp('其他值') end

复制代码

最后需要的注意的是,对每一个for switch if和while语句,都必须有一个想相应的end,不然会出现错误。有的时候一些循环和选择语句需要嵌套执行,这样分清哪一个是哪一个的end将变的很重要,希望大家养成良好的编程习惯,这样才不至于出现混乱。

不过最新版本的matlab对于end部分做的相当的到位,对于各位避免错误是相当的给力的,不过养成良好的编程习惯是一个必备的学习态度。

参考资料:

1. matlab中文论坛里阿三会员的帖子。 2.matlab入门与实战。

因篇幅问题不能全部显示,请点此查看更多更全内容