Matlab中的逻辑运算"&&""&""||""|"的区别
(2009-12-06 20:59:06)
转载
标签:
杂谈
逻辑运算符:
&
|
~
  “&|”操作符可比较两个标量或两个同阶矩阵.对于矩阵来说必须符合规则,如果AB都是0-1矩阵,则ABA|B也都是0-1矩阵,这个0-1矩阵的元素是AB对应元素之间逻辑运算的结果,逻辑操作符认定任何非零元素都为真,给出1”,任何零元素都为假,给出0
    (或逻辑非)是一元操作符,即~A:当A是非零时结果为0;当A0时,结果为1”.因此下列两种表示:
p | (~p)            结果为1
p (~p)          结果为0
anyall函数在连接操作时很有用,设x0-1向量,如果x中任意有一元素非零时,any(x)返回1”,否则返回0all(x)函数当x的所有元素非零时,返回1”,否则也返回0.这些函数在if语句中经常被用到.如:
    if all(A<5)
      do something
    end
另外,还有"&&""||"运算符,Matlab中的逻辑运算"&&""&""||""|"的区别如下:
&&||被称为&|short circuit形式,
A&B
1)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。
2AB可以为矩阵(e.g. A=[1 0],B=[0 0])。
A&&B
1)首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。
2AB不能是矩阵,只能是标量。
"|"||”同理。
A&&B 首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。这种用法非常有用,如果A是一个计算量较小的函数,B是一个计算量较大的函数,那么首先判断A对减少计算量是有好处的。另外这也可以防止类似被0除的错误:

flag=denum~=0 && num/denum>10
if flag
  %Do Something
end if
上面的表达式就可以防止denum等于0的情况。当然,如果你希望在判断的时候,对AB表达式都进行计算,就应该使用标准的&或者|Matlab中的ifwhile语句中的逻辑与和逻辑或都是默认使用short-circuit形式。


if flag=denum~=0 && num/denum>10
  %Do Something
end if

if flag=denum~=0 & num/denum>10
  %Do Something
end if

执行的结果一样
符号
符号用途说明

+


-


.
点乘  详细说明help arith


矩阵相乘


矩阵求幂

.
点幂
左除 详细说明help slash
右除

.
点左除

.
点右除

kron
张量积 详细说明help kron


作分隔用,如把矩阵元素、向量参数、函数参数、几个表达式分隔开来


(a)写在一个表达式后面时,运算后命令窗口中不显示表达式的计算结果
(b)在创建矩阵的语句中指示一行元素的结束,例如m=[x y z;i j k]


(a)创建向量的表达式分隔符,如x=abc
(b)a(,j)表示j列的所有行元素;a(i,)表示i行的所有列元素;a(13,4)表示第四列的第1行至第3行元素

()
圆括号

[]
创建数组、向量、矩阵或字符串(字母型)

{}
创建单元矩阵(cell array)或结构(struct)

%
注释符,特别当编写自定义函数文件时,紧跟function后的注释语句,在你使用help函数名时会显示出来。

'
(a)定义字符串用
(b)向量或矩阵的共轭转置符

.'
一般转置符

...
表示MATLAB表达式继续到下一行,增强代码可读性enum函数


赋值符号

==
等于关系运算符

,
小于,大于关系运算符 详细说明help relop

&
逻辑与
逻辑或

~
逻辑非

xor
逻辑异或

符号
符号用途说明


+


-


.
点乘  详细说明help arith


矩阵相乘


矩阵求幂


.
点幂
左除 详细说明help slash
右除

.
点左除

.
点右除

kron
张量积 详细说明help kron



作分隔用,如把矩阵元素、向量参数、函数参数、几个表达式分隔开来


(a)写在一个表达式后面时,运算后命令窗口中不显示表达式的计算结果
(b)在创建矩阵的语句中指示一行元素的结束,例如m=[x y z;i j k]


(a)创建向量的表达式分隔符,如x=abc
(b)a(,j)表示j列的所有行元素;a(i,)表示i行的所有列元素;a(13,4)表示第四列的第1行至第3行元素

()
圆括号


[]
创建数组、向量、矩阵或字符串(字母型)

{}
创建单元矩阵(cell array)或结构(struct)

%
注释符,特别当编写自定义函数文件时,紧跟function后的注释语句,在你使用help函数名时会显示出来。

'
(a)定义字符串用
(b)向量或矩阵的共轭转置符

.
'
一般转置符

...
表示MATLAB表达式继续到下一行,增强代码可读性


赋值符号

==
等于关系运算符

,
小于,大于关系运算符 详细说明help relop

&
逻辑与
逻辑或

~
逻辑非

xor
逻辑异或

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。