请问高手:在matlab中,&和&&的区别?

如题所述

1、用法不同

&适用于矩阵间的逻辑运算,&&不适用,只适用于单个元素,包括数值和字符。

2、使用效果不同

当判断两个逻辑值时,例如A&(f(x)>c)和A&&(f(x)>c)时,对于第一种情况,不论A是否为真,A和(f(x)>c)都要计算,但是对第二种情况,如果A是false,那么后面的(f(x)>c)就不用计算了,倘若f(x)是一个计算量大的函数,那么这将节省很多时间。

扩展资料:

&与&&的具体用法

一、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表达式都进行计算,就应该使用标准的&或者|。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

执行的结果一样。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-23
【转】Matlab中的逻辑运算"&&"与"&","||"与"|"的区别 (2009-12-06 20:59:06)转载
标签: 杂谈
逻辑运算符:

&

|

~


“&”和“|”操作符可比较两个标量或两个同阶矩阵.对于矩阵来说必须符合规则,如果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


矩阵相乘


矩阵求幂

.^
点幂

左除 详细说明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
逻辑异或

符号
符号用途说明

+


-


.*
点乘 详细说明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
逻辑异或

资料来源:http://blog.sina.com.cn/s/blog_5eb8c9aa0100g5ao.html本回答被提问者采纳
第2个回答  2010-12-21
&&是截断的,如果第一项是false,不再计算第二项
第3个回答  2010-05-17
对使用者来说没有什么区别,两者通用。
对于MATLAB来说,x & y表示x和y都为真,其表达式为1,它需要把两者同时计算。
x && y表示当计算x为0时,其表达式就为0,就不用计算y了。更智能一些。
以上都是大家这么说的。其实我也不知道怎么测试两者的区别,因为对于我们来说,它们两个都是一样用的。

请问高手:在matlab中,&和&&的区别?
1、用法不同 &适用于矩阵间的逻辑运算,&&不适用,只适用于单个元素,包括数值和字符。2、使用效果不同 当判断两个逻辑值时,例如A&(f(x)>c)和A&&(f(x)>c)时,对于第一种情况,不论A是否为真,A和(f(x)>c)都要计算,但是对第二种情况,如果A是false,那么后面的(f(x)>c)就...

符号“&”和“&&”有什么区别?
两者的区别是前者在执行过程中会出现“短路”的现象。即若符号”&&”前的表达式如果为假,那么后面的那个表达式将不会被执行,直接返回false。1、 相同点:在java中”&&”和”&”都是逻辑运算符。2、区别举例:int i=0,j=1;if(i++&&j++)System.out.println(“j=”+j);的输出结果是:j=1;...

关于在if()里面用& 和&& | 和 ||的区别
这几个符号的区别在于作用对象。&是逻辑量按位取与,也就是两个逻辑量一位一位地进行“与”运算。两边操作数的第一位上都是1时,结果的第一位值为1。否则该位值为0,其他位同理。比如 B00010010&B00100011,按位计算结果为B00000010,&&则是两个布尔变量(就是只有真和假两种值的变量)的运算...

...2.GC是什么?为什么要有GC? 3. Error与Exception有什么区别...
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。&&还具有短路的功能,即如果第一个表达式为false,则不再计算第二个表达式,例如,对于if(str != null && !str.equals(“”))表达式,当...

C语言编程中=和==;&和&& 用法和意义上有什么区别?
= 是赋值运算符, 把=号右边的值赋值给左边的变量 ==是逻辑运算符,判断 ==两边的数据是否相等,表达式返回 true或flase & 是按位与 && 是逻辑与 两者都使表达式结果返回true或false ,只是算法不一样。

c语言中||和&&的区别
答案应为C a>b为假m就被赋值为0了 &&为且的关系m=a>b为假 (m=a>b)&&(n=c>d)为假 n=c>d不参与运算n还是初值

C语言头文件中,下划线具体是什么意思?请问有没有高手指点一下?
下划线没有什何特别的意思,就是一个变量的一部分,就是你定义char str[10],char _str[10],他们俩是不同的变量名,然后都是一个字符串变量,一般头文件里或者宏定义都在变量前加一个下划线,这都是习惯问题,以示和普通函数里变量的区别,

各位高手,在c++程序语言中 { a[j++]=s[i]-'0'; }与{ a[j]=s[i]-'0...
的确,就本程序而言是没有区别的,++运算符可以举两个例子来说明:如果 j=0;while (j<10) a[j++]=j;那么实际上完成的是 a[j]=j; j++;j从0到10赋值a[j]=j;的功能 但是 j=0;while (j<10) a[++j]=j;完成的就是 j++; a[j]=j;j从1到10赋值a[j]=j;的功能 这是有区别的...

相似回答