除了传统的数学运算,MATLAB支持关系和逻辑运算。如果你已经有了一些编程经验,就会对这些运算熟悉。这些操作符和函数的目的是提供求解真/假命题的答案。一个重要的应用是控制基于真/假命题的一系列MATLAB命令(通常在M文件中)的流程,或执行次序。
作为所有关系和逻辑表达式的输入,MATLAB把任何非零数值当作真,把零当作假。所有关系和逻辑表达式的输出,对于真,输出为1;对于假,输出为零。
5.1 关系操作符
MATLAB>关系操作符包括所有常用的比较。
表5.1
关系操作符
说明
<
小于
< =
小于或等于
>
大于
> =
大于或等于
= =
等于
~ =
不等于
MATLAB>关系操作符能用来比较两个同样大小的数组,或用来比较一个数组和一个标量。在后一种情况,标量和数组中的每一个元素相比较,结果与数组大小一样。下面给出几个示例:
»
A=1:9, B=9-A
A
=
1 2 3 4 5 6 7 8 9
B
=
8 7 6 5 4 3 2 1 0
»
tf=A>4
tf
=
0 0 0 0 1 1 1 1 1
找出A中大于4的元素。0出现在A<=4的地方,1出现在A>4的地方。
»
tf=(A= =B)
tf
=
0 0 0 0 0 0 0 0 0
找出A中的元素等于B中的元素。注意,=和= =意味着两种不同的事:= = 比较两个变量,当它们相等时返回1,当它们不相等时返回0;在另一方面, = 被用来将运算的结果赋给一个变量。
»
tf=B-(A>2)
tf
=
8 7 5 4 3 2 1 0 -1
找出A>2,并从B中减去所求得的结果向量。这个例子说明,由于逻辑运算的输出是1和0的数组,它们也能用在数学运算中。
»
B=B+(B==0)*eps
B
=
Columns 1 through 7
8.0000 7.0000 6.0000 5.0000 4.0000 3.0000 2.0000
Columns 8 through 9
1.0000 0.0000
这是一个演示,表明如何用特殊的MATLAB数eps来代替在一个数组中的零元素,eps近似为2.2e-16。这种特殊的表达式在避免被0除时是很有用的。
»
x=(-3:3)/3
x
=
-1.0000 -0.6667
-0.3333 0 0.3333 0.6667 1.0000
»
sin(x)./x
Warning:
Divide by zero
ans
=
0.8415 0.9276 0.9816 NaN 0.9816 0.9276 0.8415
由于第四个数据是0 ,计算函数sin(x)/x时给出了一个警告。由于sin(0)/0是没定义的,在该处MATLAB结果返回NaN。用eps替代0以后,再试一次,
»
x=x+(x==0)*eps;
»
sin(x)./x
ans
=
0.8415 0.9276 0.9816 1.0000 0.9816 0.9276 0.8415
现在sin(x)/x在x=0处给出了正确的极限。