Main Content

if, elseif, else

Eseguire le dichiarazioni se la condizione è vera

Sintassi

if expression
    statements
elseif expression
    statements
else
    statements
end

Descrizione

esempio

if expression, statements, end valuta un’espressione ed esegue un gruppo di dichiarazioni quando l’espressione è vera. Un'espressione è vera quando il relativo risultato non è vuoto e contiene solo elementi diversi da zero (logici o numeri reali). Diversamente, l'espressione è falsa.

I blocchi elseif e else sono opzionali. Le dichiarazioni vengono eseguite solo se le espressioni precedenti nel blocco if...end sono false. Un blocco if può includere più blocchi elseif.

Esempi

comprimi tutto

Creare una matrice di 1s.

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

Eseguire un loop nella matrice e attribuire un nuovo valore a ciascun elemento. Attribuire 2 sulla diagonale principale, -1 sulle diagonali adiacenti e 0 in qualsiasi altro punto.

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

Le espressioni che includono operatori relazionali sugli array, come A > 0, sono vere solo quando ogni elemento del risultato è diverso da zero.

Verificare se un qualsiasi risultato è vero utilizzando la funzione 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.

Per verificare l’uguaglianza, confrontare gli array utilizzando l’operatore isequal piuttosto che ==, poiché == produce un errore quando gli array hanno dimensioni diverse.

Creare due array.

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

Se size(A) e size(B) sono uguali, concatenare gli array; diversamente, visualizzare un avviso re restituire un array vuoto.

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.

Utilizzare strcmp per confrontare vettori di caratteri. L’utilizzo di == per verificare l’uguaglianza produce un errore quando i vettori di caratteri hanno dimensioni diverse.

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

Determinare se un valore è diverso da zero. Utilizzate l'operatore ~= per verificare la disuguaglianza.

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

Determinare se un valore rientra in un intervallo specificato.

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.

Ulteriori informazioni

comprimi tutto

Espressione

Un’espressione può includere operatori relazionali (come < o ==) e operatori logici (come &&, || o ~). Utilizzare gli operatori logici and e or per creare espressioni composte. MATLAB® valuta le espressioni composte da sinistra verso destra, rispettando le regole di precedenza degli operatori.

All'interno dell'espressione condizionale di un blocco if...end, gli operatori logici & e | si comportano come operatori di cortocircuito. Questo comportamento è rispettivamente lo stesso di && e ||. Poiché && e || entrano costantemente in cortocircuito nelle espressioni e nelle dichiarazioni condizionali, è buona norma utilizzare && e || anziché & e | all’interno dell’espressione. Ad esempio,

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

La prima parte dell’espressione restituisce falso. Pertanto, non è necessario che MATLAB valuti la seconda parte dell’espressione che darebbe luogo un errore di funzione non definita.

Suggerimenti

  • È possibile annidare un numero qualsiasi di dichiarazioni if. Ciascuna dichiarazione if richiede una parola chiave end.

  • Evitare di aggiungere uno spazio dopo else all’interno della parola chiave elseif (else if). Lo spazio crea una dichiarazione if annidata che richiede la propria parola chiave end.

Funzionalità estese

Generazione di codice C/C++
Genera codice C e C++ con MATLAB® Coder™.

Cronologia versioni

Introduzione prima di R2006a