Chinaunix首页 | 论坛 | 博客
  • 博客访问: 671030
  • 博文数量: 90
  • 博客积分: 1631
  • 博客等级: 上尉
  • 技术积分: 1413
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-15 22:43
文章分类
文章存档

2017年(8)

2016年(9)

2015年(11)

2014年(10)

2013年(9)

2012年(9)

2010年(2)

2009年(10)

2008年(22)

我的朋友

分类: C#/.net

2013-11-09 15:47:51

     Matlab中有两个逻辑与的运算符:&&和&,其中&&是&的short-circuit形式。

     如逻辑表达式A&B,在逻辑运算时,需要同时判断A和B的逻辑,若A=1,B=1,则A&B=1;若A=0,B=1,则A&B=0。
     但使用A&&B运算的时候则会只能很多,不需要同时判断A和B的逻辑,只要判断出A=0,则直接把逻辑运算结果置为0。

     利用这个特性可以在程序中得到很大的便利,如以下程序:

点击(此处)折叠或打开

  1. if flag_linear==1 & va==3 & flag_minus==1
  2.     frequency_max_transant=max(frequency(t_speed>(t0+0) & t_speed<simt*0.4)); %带负载后瞬态时的频率最大值
  3. end
     由于运算是定义了flag_linear=0而暂时没有定义va和flag_minus,所以程序运行时会提示错误,但只要将程序改为如下形式:

点击(此处)折叠或打开

  1. if flag_linear==1 && va==3 && flag_minus==1
  2.     frequency_max_transant=max(frequency(t_speed>(t0+0) & t_speed<simt*0.4)); %带负载后瞬态时的频率最大值
  3. end

     此时由于flag_linear=0,所以判断时会把if语句直接置0,而不会检测是不是定义了va和flag_minus。
阅读(1745) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~