网站首页  |  幼儿教育  |  中小学教育  |  电脑教育  |  英语教育  |  教育论文  |  家长教育 设为首页加入收藏联系投稿 
 位置: 中国教育学习网 > 电脑教育 > 机械电子 > MATLAB > 正文

MATLAB关系与逻辑函数

字号:   

    除了上面的关系与逻辑操作符,MATLAB提供了大量的其他关系与逻辑函数,包括:

表5.3

其  他  关  系  与  逻  辑  函  数

xor(x,y)

异或运算。x或y非零(真)返回1,x和y都是零(假)或都是非零(真)返回0。

any(x)

如果在一个向量x中,任何元素是非零,返回1;矩阵x中的每一列有非零

元素,返回1。

all(x)

如果在一个向量x中,所有元素非零,返回1;矩阵x中的每一列所有元素

非零,返回1。

    除了这些函数,MATLAB还提供了大量的函数,测试特殊值或条件的存在,返回逻辑值。

表5.4

测  试  函  数

finite

元素有限,返回真值。

isempty

参量为空,返回真值。

isglobal

参量是一个全局变量,返回真值。

ishold

当前绘图保持状态是‘ON’,返回真值。

isieee

计算机执行IEEE算术运算,返回真值。

isinf

元素无穷大,返回真值。

isletter

元素为字母,返回真值。

isnan

元素为不定值,返回真值。

isreal

参量无虚部,返回真值。

isspace

元素为空格字符,返回真值。

isstr

参量为一个字符串,返回真值。

isstudent

MATLAB为学生版,返回真值。

isunix

计算机为UNIX系统,返回真值。

isvms

计算机为VMS系统,返回真值。

5.4  NaNs和空矩阵

    NaNs和空矩阵([  ])要求在MATLAB中作特殊处理,特别是用在逻辑或关系表达式里。根据IEEE数学标准,对NaNs的几乎所有运算都得出NaNs。例如,

          » a=[1  2  nan  inf  nan]   %  note,in use, NaN can be lowercase

          a =

               1     2   NaN   Inf   NaN

          » b=2*a

          b =

               2     4   NaN   Inf   NaN

          » c=sqrt(a)

          c =

              1.0000    1.4142       NaN       Inf       NaN

          » d = (a= =nan)

          d =

               0     0     0     0     0

          » f = (a~ =nan)

          f =

               1     1     1     1     1 

    上面的第一和第二计算式对NaN输入给出NaN结果。然而,最后两个计算式产生有点令人惊讶的结果。当NaNNaN相比较时,(a= =nan)产生全部为0或假的结果,同时(a~ =nan)产生全部1或真值。于是,单个NaNs相互不相等。由于NaNs的这种特性,MATLAB有一个内置逻辑函数寻找NaNs

                   » g=isnan(a)

                   g =

                        0     0     1     0     1

    这个函数用find命令能找出NaNs的下标值。例如,

          » i=find(isnan(a))      %  find indices of NaNs

          i =

               3     5

          » a(i)=zeros(size(i))    %  changes NaNs in a to zeros

          a =

               1     2     0   Inf     0

    当NaNs数学上由IEEE标准充分定义时,空矩阵由MATLAB的生成器确定,并有它自己的特性。空矩阵是简单的,它们是MATLAB大小为零的变量。

          » size([  ])

          ans =

               0     0

    当没有其它合适的结果时,在MATLAB中的许多函数返回空矩阵。或许最普通的例子是函数find

          » x=(1:5)-3     %  new data

          x =

              -2    -1     0     1     2

          » y=find(x>2)

          y =

               [  ]

    在这个例子里,x没有包含大于2的值,所以没有返回下标。为了测试空结果,MATLAB提供了逻辑函数isempty

          » isempty(y)

          ans =

               1

    在MATLAB里,空矩阵不等于任何非零矩阵(或标量)。这个事实由下面例子给出:

          » y=[  ];

          » a=(y==0)

          a =

               0

这说明一个空矩阵不等于一个标量,因此,

          »find(y= =0)

          ans =

               [  ]

也就是说没有返回下标。同样地,

          b=(y~=0)

          b =

               1

一个空矩阵不等于一个标量。但

          » j=find(y~=0)

          j =

               1

尽管y大小为零,现在有一个下标值!上面最后的一个例子是MATLAB中一个非文本变化,由于版本3.5先于版本4.0,一个空矩阵与一个非空矩阵比较返回一个空矩阵。‘这个新的解释通常导致产生问题,因为y(find(y~=0))不存在。’例如,

          » y(find(y~=0))

          ???  Index exceeds matrix dimensions.

这里MATLAB报告一个错误,因为下标超出了空矩阵y的维数。

    NaNs和空矩阵的特性概括在表5.5中。

表5.5

NaNs  和  空  矩  阵

数据

a=[1  2  nan  inf  nan]

表达式

结果

2*a

[2  4  NaNMATLAB关系与逻辑函数NaN]

(a= =nan)

[0  0  0  0  0]

(a~ =nan)

[1  1  1  1  1]

isnan(a)

[0  0  1  0  1]

y=find(a= =0)

y=[  ]

isempty(y)

1

(y= =0)

0

find(y= =0)

[  ]

(y~ =0)

1

j=find(y~ =0)

j=1

y(j)

Error!  y(j)  does not exist.

收藏此文  |  打印  

 
  • 上一篇教程:

  • 下一篇教程:

  •   GoogLe
     
      最新推荐
  • 此栏目下没有推荐教程

  •   最近更新

      GoogLe

     
    Powered by Cn-Education.Com (c) 2005-2008 中国教育学习网 教育网站长QQ交流群60041790
    设为首页  |  加入收藏  |  版权申明  |  广告服务  |  联系我们  |  友情链接  |  网站地图  |  返回顶部 ↑