Main Content

if, elseif, else

Ejecutar instrucciones si la condición es verdadera

Sintaxis

if expression
    statements
elseif expression
    statements
else
    statements
end

Descripción

ejemplo

if expression, statements, end evalúa una expresión y ejecuta un grupo de instrucciones cuando la expresión es verdadera. Una expresión es verdadera cuando su resultado no está vacío y solo contiene elementos distintos a cero (lógicos o numéricos reales). En caso contrario, la expresión es falsa.

Los bloques elseif y else son opcionales. Las instrucciones se ejecutan solo si las expresiones anteriores del bloque if...end son falsas. Un bloque if puede incluir varios bloques elseif.

Ejemplos

contraer todo

Cree una matriz de unos.

nrows = 4;
ncols = 6;
A = ones(nrows,ncols);

Recorra la matriz en bucle y asigne a cada elemento un nuevo valor. Asigne 2 en la diagonal principal, -1 en las diagonales adyacentes y 0 en todas las demás.

for c = 1:ncols
    for r = 1:nrows
        
        if r == c
            A(r,c) = 2;
        elseif abs(r-c) == 1
            A(r,c) = -1;
        else
            A(r,c) = 0;
        end
        
    end
end
A
A = 4×6

     2    -1     0     0     0     0
    -1     2    -1     0     0     0
     0    -1     2    -1     0     0
     0     0    -1     2    -1     0

Las expresiones que incluyen operadores relacionales sobre arreglos, como A > 0, son verdaderas solo cuando cada elemento del resultado es distinto de cero.

Compruebe si algún resultado es verdadero con la función any.

limit = 0.75;
A = rand(10,1)
A = 10×1

    0.8147
    0.9058
    0.1270
    0.9134
    0.6324
    0.0975
    0.2785
    0.5469
    0.9575
    0.9649

if any(A > limit)
    disp('There is at least one value above the limit.')
else
    disp('All values are below the limit.')
end
There is at least one value above the limit.

Compare los arreglos con isequal en lugar del operador == para comprobar la igualdad, porque == da lugar a error cuando los arreglos tienen tamaños diferentes.

Cree dos arreglos.

A = ones(2,3);
B = rand(3,4,5);

Si size(A) y size(B) son iguales, concatene los arreglos; de lo contrario, se muestra una advertencia y se devuelve un arreglo vacío.

if isequal(size(A),size(B))
   C = [A; B];
else
   disp('A and B are not the same size.')
   C = [];
end
A and B are not the same size.

Utilice strcmp para comparar vectores de caracteres. El uso de == para comprobar la igualdad da lugar a error cuando los vectores de caracteres tienen tamaños diferentes.

reply = input('Would you like to see an echo? (y/n): ','s');
if strcmp(reply,'y')
  disp(reply)
end

Determine si un valor es distinto de cero. Utilice el operador ~= para comprobar la desigualdad.

x = 10;
if x ~= 0
    disp('Nonzero value')
end
Nonzero value

Determine si un valor está dentro de un rango especificado.

x = 10;
minVal = 2;
maxVal = 6;

if (x >= minVal) && (x <= maxVal)
    disp('Value within specified range.')
elseif (x > maxVal)
    disp('Value exceeds maximum value.')
else
    disp('Value is below minimum value.')
end
Value exceeds maximum value.

Más acerca de

contraer todo

Expresión

Una expresión puede incluir operadores relacionales (como < o ==) y operadores lógicos (como &&, || o ~). Utilice los operadores lógicos and y or para crear expresiones compuestas. MATLAB® evalúa las expresiones compuestas de izquierda a derecha, respetando las reglas de prioridad de los operadores.

Dentro de la expresión condicional de un bloque if...end, los operadores lógicos & y | se comportan como operadores de cortocircuito. Este comportamiento es el mismo que && y ||, respectivamente. Dado que && y || se cortocircuitan sistemáticamente en las instrucciones y expresiones condicionales, se recomienda utilizar && y || en lugar de & y | dentro de la expresión. Por ejemplo,

x = 42;
if exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
end

La primera parte de la expresión se evalúa como falsa. Por tanto, MATLAB no necesita evaluar la segunda parte de la expresión, lo que provocaría un error de función indefinido.

Sugerencias

  • Puede anidar cualquier número de instrucciones if. Cada instrucción if requiere una palabra clave end.

  • Evite agregar un espacio después de else dentro de la palabra clave elseif (else if). El espacio crea una instrucción if anidada que requiere su propia palabra clave end.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Historial de versiones

Introducido antes de R2006a