beyondhxf 发表于 2008-12-17 20:53

matlab有两种逻辑与

如题,分别是 | 和 || 这两种,有什么区别?

ch_j1985 发表于 2008-12-17 21:03

回复 楼主 beyondhxf 的帖子

| 代表逻辑或
&代表逻辑与

beyondhxf 发表于 2008-12-17 21:16

回复 沙发 ch_j1985 的帖子

我知道啊,可是逻辑或有两种,一种是|,另一种是||(有两竖)
这两种还有区别那!

ch_j1985 发表于 2008-12-17 22:46

回复 板凳 beyondhxf 的帖子

在我的印象中就一种!

beyondhxf 发表于 2008-12-18 13:52

回复 地板 ch_j1985 的帖子

这个。。。你可以自己试试,真的有两种。不知道区别。。。

friendchj 发表于 2008-12-18 14:13

原帖由 beyondhxf 于 2008-12-17 21:16 发表 http://www.chinavib.com/forum/images/common/back.gif
我知道啊,可是逻辑或有两种,一种是|,另一种是||(有两竖)
这两种还有区别那!
| 可用于矩阵或标量;|| 只能用能用于标量

rocwoods 发表于 2008-12-18 14:28

还有一个区别就是如果&&和||符号左边的表达式可以判断出最后结果的话,右边的就不计算了,不管右边的表达式是什么。这样比&和|效率高。楼主可以试试
tic;0&&sum(sum(rand(30000)));
toc

tic;0&sum(sum(rand(30000)));
toc


[ 本帖最后由 rocwoods 于 2008-12-18 14:50 编辑 ]

ChaChing 发表于 2008-12-18 16:20

之前就知道有这 && (旧版v5.6无, 新版才有), 但一直未认真去看手册了解差异, 早上找空看了下
楼上两位大牛说的对! 现整理下手册重要内容, 大家参考!

& | ~ : 对矩阵每一元素分别执行逻辑判断, 运算可能为逻辑矩阵, 试试 u = ; v = ; u | v
要注意&运算子优先於|运算子, a|b&c是a|(b&c), 与a/b*c意义不同!

&& || (注意无~): 具short-circuiting功能的逻辑判断, 运算子前後逻辑判断结果都需为纯量. 後逻辑表达式仅在前逻辑表达式无法判断真伪时才进行, 可避免警告讯息或出错, 当然效率较好
试试差异
x = (b ~= 0) && (a/b > 18.5) 及 x = (b ~= 0) & (a/b > 18.5)
comp = (exist('myfun.m') == 2) && (myfun(x) >= y) 及 comp = (exist('myfun.m') == 2) & (myfun(x) >= y)

ch_j1985 发表于 2008-12-18 22:07

又长见识啦!

beyondhxf 发表于 2008-12-24 12:42

回复 8楼 ChaChing 的帖子

您的回复相当的全面,谢谢了。也谢谢楼上两位大牛。

在您的回复中。纯量应理解为标量。单个元素矩阵的意思。已通过验证。

||和&&的前后表达式不可以是元素多于1的矩阵!
而|和@却可以。大家可以试试。结果也不尽相同。

ChaChing 发表于 2008-12-24 13:21

回复 10楼 beyondhxf 的帖子

对! 纯量(scalar)就是标量
对不起! 一些繁体术语已经用了几十年了! 有时又不熟简体术语! 还没学透! 这也是有些时不太敢回覆的原因!

beyondhxf 发表于 2008-12-24 13:39

回复 11楼 ChaChing 的帖子

请随意回复。您的答案很有价值,大家肯定很欢迎。
繁体字对我来说还好。不会写,但是大概能猜出意思。
呵呵。
页: [1]
查看完整版本: matlab有两种逻辑与