MATLAB的其他结构

本节介绍MATLAB的另外两种循环结构,即For Each…Next结构和Do循环结构。[大谦MATLAB,dqmatlab点com]

判断结构-switch/case结构

当判断结构中的条件根据表达式值的不同可有多个选项时,使用switch/case结构。该结构的通用格式为:

code.matlab
switch switch 判断条件
  case case 条件1,
    执行语句1;
  case case条件2,
    执行语句2;
  case case 条件3,
    执行语句3;
    …..
  otherwise
    执行语句n;
end

其中,判断条件给出开关条件,当某个条件与之匹配时,就执行其后的语句,如果没有条件与之匹配,就执行otherwise后面的语句。在执行过程中,只有一个case命令被执行,当执行完命令后,程序就跳出分支结构,执行end下面的语句。

在表3-4中列出了switch/case语句与if/end语句之间的区别。

表3-4 switch/case语句和if/elseif语句之间的区别

switch/case语句 if/end语句
更好读 更难读
可以比较不同长度的字符串 需要strcmp函数比较不同长度的字符串
只测试相等性 测试相等性或不等性

根据method的取值显示不同的内容的代码如下。值为"linear"时显示“方法为线性插值方法。”值为"cubic"时,显示“方法为三次插值方法。”

code.matlab
>> method='linear';
>> switch method
  case 'linear'
    disp('方法为线性插值方法。')
  case 'cubic'
    disp('方法为三次插值方法。')
end

输出结果为:

code.matlab
方法为线性插值方法。

可以用switch语句测试一种以上的情况,下面的例子在case语句中用元胞数组测试一个linear方法或bilinear方法。

code.matlab
>> switch method
  case {'linear', 'bilinear'}
    disp('方法为线性或双线性方法。')
    …
end

下面代码中如果result等于52,则只有第一个disp语句运行。虽然第二个case也符合要求,但它不会运行。

code.matlab
>> result=52;
>> switch(result)
     case 52
        disp('结果为52')
     case {52,78}
        disp('结果为52或78')
end

输出结果为:

code.matlab
结果为52

其他命令和语句

前面各节介绍了MATLAB和Python中常见的语法结构,除了它们以外还有一些比较特殊的命令和语句,用于实现跳出、跳转、终止和占位等操作,本节对它们进行介绍。

MATLAB中的其他命令和语句

MATLAB中的其他命令和语句包括continue, break和return等。

continue命令经常与for或while语句一起使用,其作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判断。

break命令也经常与for或while等语句一起使用,其作用是终止本次循环,跳出最内层的循环。使用break命令可以不必等到循环自然结束,而是根据条件退出循环。

return命令能使当前正在运行的函数正常退出,并返回调用它的函数,继续运行。这个语句经常用于函数的末尾,以正常结束函数的运行。

break,continue和return命令比较容易混淆,表3-5对它们进行了比较详细的比较。

表3-5 break,continue和return命令的区别

命 令 用 在 何 处 描 述
break for 或while循环 它出现时,退出循环,在嵌套的循环中,进入相邻的外层循环
continue for或while循环 在本循环中跳过剩余的语句,进入本循环的下一次迭代
return 任意位置 它出现时,立即退出函数,进入函数的调用函数中

Python中的其他命令和语句

Python中的其他命令和语句包括break, continue和pass等。

break语句

break语句用在while循环或for循环中,在必要的时候终止和跳出循环。

下面用for循环对给定的数据区间进行累加求和,要求累加和的大小不能超过100,也就是说,此时用break语句终止和跳出循环。

在Python IDLE Shell窗口输入:

code.python
>>> sum=0
>>> num=0
>>> for num in range(100):
       old_sum=sum
       sum+=num
       if sum>100:break  #累加和大于100时跳出循环
>>> print(num-1)  #数字
>>> print(old_sum)  #小于100的累加和

回车,显示:

code.python
13
91

也可以在while循环中使用break语句跳出循环。用while循环改写上面的程序。在Python IDLE Shell窗口输入:

code.python
>>> sum=0
>>> n=0
>>> while(n<=100):
        old_sum=sum
        sum+=n
        if sum>100:break  #累加和大于100时跳出循环
        n+=1
>>> print(n-1)
>>> print(old_sum)

回车,得到相同的计算结果。

continue语句

continue语句跟break语句的作用类似,都是用在循环中,用于跳出循环。不同的是,break语句是跳出整个循环,continue语句则是跳出本轮循环。

下面的for循环输出0-4区间内的整数,但是不输出3。在Python IDLE Shell窗口输入:

code.python
for i in range(5):
	if i==3:continue
  	print(i)

回车,显示:

code.python
0
1
2
4

可见,数据3没有输出。

pass语句

pass语句是占位语句,它不做任何事情,用于保持程序结构的完整性。在判断结构中,判断条件满足时,如果什么也不执行,会出错,即在文件或命令行执行下面的语句:

code.python
if a>1:  #什么也不做

会出错。此时用pass语句放在冒号后面,虽然还是什么也不做,但保证了语法上的完整性,不会出错了。即

code.python
if a>1:pass  #什么也不做

另外,在自定义函数时,如果定义一个空函数,也会出错。此时函数体放一个pass语句,就不会出错了。