i*****r 发帖数: 1302 | 1 我一直用&&和||,但今天用&&的时候,告诉我
Operands to the || and && operators must be convertible to
logical scalar values.
我读了help文件,还是没看明白 | c******n 发帖数: 49 | 2 Search the help file for "Short-circuit" | V*********n 发帖数: 198 | 3 & is elementwise comparison
so [1,2] & 0 = [0,0] [1,2]& 1 = [1,1]
but the inputs for && must both be logic.
so [ 1,2] && 0 is invalid.
but 1 && 0 is valid.
【在 i*****r 的大作中提到】 : 我一直用&&和||,但今天用&&的时候,告诉我 : Operands to the || and && operators must be convertible to : logical scalar values. : 我读了help文件,还是没看明白
| i*****r 发帖数: 1302 | 4 [1,2] & 0是什么意思?
那么if A >2 && A <6 和 if A>2 & A<6 其实没有区别的了?
我今天是用find(A>2 && A<6)的时候得到error的, 改成&就好了
【在 V*********n 的大作中提到】 : & is elementwise comparison : so [1,2] & 0 = [0,0] [1,2]& 1 = [1,1] : but the inputs for && must both be logic. : so [ 1,2] && 0 is invalid. : but 1 && 0 is valid.
| m*********g 发帖数: 646 | 5 & 是element wise的,举例来讲如果 [a b&[c d]比较,输出的结果是[a&b c&d],注意
输出的是logical vector, 只有0 或者 1。 如果a是零,其他的都非零,那么输出的是
[0 1]如果 d是0 其他的都非零输出的是[1 0]。如果某一边只有一个数,比如,a&[b c
d]那么输出的是[a&b a&c a&d] 如果两边长度都大于一,而且不一样,那么没有办法
定义,报错。
&& 只能比较两个 logical value, 比如 1&&2 可以,任何数组都不可以,因为没办法
转换成logical value.
从你的例子来说,A>2 输出一个 0/1数组,每个都表示该元素是不是 >2 同样A<6也是
这样的。
这样操作两面都是数组,用&&就没有定义,因为没办法转换成一个单个的逻辑数。
用&输出的是element wise 的比较结果。
明白了么?
另外,MATLAB的帮助文档说的是非常清楚的。。。。。。。
【在 i*****r 的大作中提到】 : [1,2] & 0是什么意思? : 那么if A >2 && A <6 和 if A>2 & A<6 其实没有区别的了? : 我今天是用find(A>2 && A<6)的时候得到error的, 改成&就好了
| b********p 发帖数: 875 | | g*****a 发帖数: 340 | 7 我就想问一句为啥前面不加个点呢?如果他用 .&&我都不会去翻帮助文档。。。
或者用&和.&
【在 b********p 的大作中提到】 : 把&看成.*就行
|
|