注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

王小二的博客

勤俭以修身,淡泊以明志

 
 
 

日志

 
 

Matlab中的逻辑运算"&&"与"&","||"与"|"的区别  

2011-12-30 11:13:13|  分类: 专业相关 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

逻辑运算符: 

&

|

~

     “&”和“|”操作符可比较两个标量或两个同阶矩阵.对于矩阵来说必须符合规则,如果A和B都是0-1矩阵,则A&B或A|B也都是0-1矩阵,这个0-1矩阵的元素是A和B对应元素之间逻辑运算的结果,逻辑操作符认定任何非零元素都为真,给出“1”,任何零元素都为假,给出“0”.

非(或逻辑非)是一元操作符,即~A:当A是非零时结果为“0”;当A为“0”时,结果为“1”.因此下列两种表示:

p | (~p)             结果为1.

p & (~p)          结果为0.

any和all函数在连接操作时很有用,设x是0-1向量,如果x中任意有一元素非零时,any(x)返回“1”,否则返回“0”;all(x)函数当x的所有元素非零时,返回“1”,否则也返回“0”.这些函数在if语句中经常被用到.如:

if all(A<5)

   do something

end

另外,还有"&&"和"||"运算符,Matlab中的逻辑运算"&&"与"&","||"与"|"的区别如下

&&和||被称为&和|的short circuit形式,

A&B
     (1)首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。
     (2)A和B可以为矩阵(e.g. A=[1 0],B=[0 0])。
      A&&B
    (1)首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。
    (2)A和B不能是矩阵,只能是标量。
     "|"与“||”同理。

A&&B 首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。这种用法非常有用,如果A是一个计算量较小的函数,B是一个计算量较大的函数,那么首先判断A对减少计算量是有好处的。另外这也可以防止类似被0除的错误:
      flag=denum~=0 && num/denum>10
      if flag
     %Do Something
      end if
     上面的表达式就可以防止denum等于0的情况。当然,如果你希望在判断的时候,对A和B表达式都进行计算,就应该使用标准的&或者|。Matlab中的if和while语句中的逻辑与和逻辑或都是默认使用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
*矩阵相乘
^矩阵求幂
 .^ 点幂
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
 &逻辑与
 

  评论这张
 
阅读(676)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017