¿Cuál es la diferencia entre los operadores lógicos &y &&en MATLAB?
matlab
logical-operators
short-circuiting
Fantomas
fuente
fuente

&puede operar en matrices pero&&solo puede operar en escalares.d != 0 && 1/dvsd !=0 & 1/d- el primero no garantiza la división por cero, el segundo no.&hace cortocircuito si en unaifdeclaración. Y&&toma entradas escalares. La respuesta de @ Loren a continuación es correcta.&&y||tomar entradas escalares y cortocircuito siempre.|y&tomar entradas de matriz y cortocircuito solo en declaraciones if / while. Para la asignación, estos últimos no cortocircuitan.Consulte estas páginas de documentos para obtener más información.
fuente
&y|en declaraciones if / while? No parece ser el caso en R2012b y R2014a.Como ya han mencionado otros,
&es un operador AND lógico y&&es un operador AND de cortocircuito . Se diferencian en cómo se evalúan los operandos y en si operan o no en matrices o escalares:&(Operador Y) y|(Operador O) pueden operar en matrices de una manera por elementos.&&y||son versiones de cortocircuito para las que el segundo operando se evalúa solo cuando el resultado no está completamente determinado por el primer operando. Estos solo pueden operar en escalares , no en matrices.fuente
Ambos son operaciones AND lógicas. Sin embargo, && es un operador de "cortocircuito". De los documentos de MATLAB:
Vea más aquí .
fuente
Similar a otros lenguajes,
&es un operador lógico bit a bit, mientras que&&es una operación lógica.Por ejemplo (perdón por mi sintaxis).
Si..
..o..
Para
&&, el operando derecho solo se calcula si el operando izquierdo es verdadero y el resultado es un único valor booleano.x = (b ~= 0) && (a/b > 18.5)Espero que esté claro.
fuente
bitandes el operador AND lógico bit a bit en MATLAB.&& y || son cortocircuitos operadores de que operan sobre escalares. & y | operan en matrices y usan cortocircuitos solo en el contexto de expresiones de bucle
ifowhile.fuente
Una buena regla general al construir argumentos para usar en declaraciones condicionales (SI, MIENTRAS, etc.) es usar siempre && / || formularios, a menos que haya una muy buena razón para no hacerlo. Hay dos razones ...
Hacer esto, en lugar de depender de la resolución de vectores de MATLAB en & y |, conduce a un código que es un poco más detallado, pero MUCHO más seguro y fácil de mantener.
fuente
r((r<2)&(r<2))".