matlab中&和&& 有什么区别?相同吗?

2024-11-13 07:06:59
推荐回答(3个)
回答1:

&&被称为&的short circuit形式,并不完全相同,区别如下:

1、判断不同

A&B:首先判断A的逻辑值,然后判断B的值,然后进行逻辑与的计算。

A&&B:首先判断A的逻辑值,如果A的值为假,就可以判断整个表达式的值为假,就不需要再判断B的值。

2、适用的对象不同

A&B:A和B可以为矩阵(e.g.A=[1 0],B=[0 0])。

A&&B:A和B不能是矩阵,只能是标量。

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形式。

扩展资料:

matlab的逻辑运算符:&

"&”操作符可比较两个标量或两个同阶矩阵,对于矩阵来说必须符合规则,如果A和B都是0-1矩阵,则A&B也都是0-1矩阵。

这个0-1矩阵的元素是A和B对应元素之间逻辑运算的结果,逻辑操作符认定任何非零元素都为真,给出"1",任何零元素都为假,给出"0"。

如:p&(~p)结果为0

回答2:

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

执行的结果一样。

回答3:

完成的功能一样,但可适用范围可能不一样。总结它们的不同如下:
&&和||被称为&和|的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不能是矩阵,只能是标量。
PS:matlab里面的“|”和“||”运算符也有这样的区别。

望楼主采纳!