matlab(4)

作者在 2006-12-19 01:06:00 发布以下内容

MATLAB 的语句流程与控制

  作为一种常用的编程语言,MATLAB 支持各种流程控制结构,如循环结构、条件转移结构、客观结构等另外 MATLAB 还支持一种新的结构 --- 试探结构。

循环语句有两种结构: for ... end 结构和 while ... end 结构。 这两种语句结构不完全相同,各有各的特色。for ... end 语句通常的调用格式为:

for 循环变量=s1:s3:s2
    循环体语句组
end

注意,这里的循环语句是以 end 结尾的,这和 C 语言的结构不完全一致。 

〖例〗 如果用户想由 MATLAB 求出 1+2+...+100 的值,可以作下列的循环:
>> mysum=0; for i=1:1:100,mysum=mysum+i; end; mysum
mysum =
5050

在上面的式子中,可以看到 for 循环语句中 s3 的值为 1。在 MATLAB 实际编程中,如果 s3 的值为 1,
则可以在该语句中省略,故该语句可以简化成 for i=1:100。

在实际编程中,在 MATLAB 下采用循环语句会降低其执行速度,所以前面的程序可以由下面的命令来代替: i=1:100; mysum=sum(i)。在这一语句中,首先生成了一个向量 i, 然后用内部函数 sum() 求出 i 向量的各个元素之和,或更简单地,该语句还可以写成 sum(1:100)。如果前面的 100 改成 10000, 再运行这一程序,则可以明显地看出,后一种方法编写的程序比前一种方法快得多。

MATLAB 并不要求循环点等间距,假设 V 为任意一个向量,则可以用 for i=V 来表示循环。

同样的问题在 while 循环结构下可以表示为

mysum = 0; i=1; while (i<=100), mysum=mysum+i; i=i+1; end

条件转移语句:和 C 语言相象

if 条件式1
   条件块语句组1
elseif 条件式2
   条件块语句组2
...
else
   条件块语句组n+1 
end

开关结构:

MATLAB 从 5.0 版开始提供了开关语句结构,其基本语句结构为:

switch 开关表达式
case 表达式1 
   语句段1 
case {表达式2,表达式3,..., 表达式m}
   语句段2
...
otherwise 
   语句段n 
end

MATLAB 开关语句与 C 有区别:

  • 当开关表达式的值等于表达式 1 时,将执行语句段 1,执行完语句段 1 后将转出开关体,无需像 C 语言那样在下一个 case 语句前加 break 语句,所以本结构在这点上和 C 语言是不同的。
  • 当需要在开关表达式满足若干个表达式之一时执行某一程序段,则应该把这样的一些表达式用大括号括起来,中间用逗号分隔。事实上,这样的结构是 MATLAB 语言定义的单元结构, 其具体内容将在后面叙述。
  • 当前面枚举的各个表达式均不满足时,则将执行 otherwise 语句后面的语句段,此语句等价于 C 语言中的 default 语句。
  • 在 case 语句引导的各个表达式中,不要用重复的表达式,否则列在后面的开关通路将永远也不能执行。
  • 程序的执行结果和各个 case 语句的次序是无关的。

试探结构:

MATLAB 从 5.2 版本开始提供了一种新的试探式语句结构,其一般的形式为:

try
   语句段1
catch
   语句段2
end

本语句结构首先试探性地执行语句段 1,如果在此段语句执行过程中出现错误,则将错误信息赋给保留的 lasterr 变量,并放弃这段语句,转而执行语句段 2 中的语句。这种新的语句结构是 C 等语言中所没有的。

matlab | 阅读 1942 次
文章评论,共0条
游客请输入验证码
浏览98312次