Main Content

if, elseif, else

Ausführen von Anweisungen, wenn eine Bedingung wahr ist

Syntax

if expression
    statements
elseif expression
    statements
else
    statements
end

Beschreibung

Beispiel

if expression, statements, end wertet einen Ausdruck aus und führt eine Gruppe von Anweisungen aus, wenn der Ausdruck wahr ist. Ein Ausdruck ist wahr, wenn das Ergebnis nicht leer ist und nur Elemente ungleich null (logisch oder reell numerisch) enthält. Anderenfalls ist der Ausdruck falsch.

Die Blöcke elseif und else sind optional. Die Anweisungen werden nur ausgeführt, wenn die vorherigen Ausdrücke im Block if...end falsch sind. Ein if-Block kann mehrere elseif-Blöcke enthalten.

Beispiele

alle reduzieren

Erstellen Sie eine Matrix aus Einsen.

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

Durchlaufen Sie die Matrix mit Schleifen und weisen Sie jedem Element einen neuen Wert zu. Weisen Sie der Hauptdiagonalen den Wert 2, den benachbarten Diagonalen den Wert -1 und allen anderen Stellen den Wert 0 zu.

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

Ausdrücke, die relationale Operatoren in Arrays einschließen, z. B. A > 0, sind nur wahr, wenn jedes Element im Ergebnis ungleich null ist.

Prüfen Sie mithilfe der Funktion any, ob einige der Ergebnisse wahr sind.

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.

Vergleichen Sie Arrays mithilfe von isequal anstelle des Operators ==, um sie auf Gleichheit zu prüfen, da == zu einem Fehler führt, wenn die Arrays unterschiedliche Größen aufweisen.

Erstellen Sie zwei Arrays.

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

Wenn size(A) und size(B) identisch sind, werden die Arrays verknüpft. Anderenfalls wird eine Warnung angezeigt und es wird ein leeres Array zurückgegeben.

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.

Verwenden Sie strcmp, um Zeichenvektoren zu vergleichen. Wenn Sie für die Prüfung auf Gleichheit == verwenden, führt dies zu einem Fehler, wenn die Zeichenvektoren unterschiedliche Größen aufweisen.

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

Bestimmen Sie, ob ein Wert ungleich null ist. Verwenden Sie den Operator ~=, um die Werte auf Ungleichheit zu prüfen.

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

Bestimmen Sie, ob ein Wert in einen bestimmten Bereich fällt.

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.

Mehr über

alle reduzieren

Ausdruck

Ein Ausdruck kann relationale Operatoren (z. B. < oder ==) und logische Operatoren (z. B. &&, || oder ~) umfassen. Verwenden Sie die logischen Operatoren and und or, um zusammengesetzte Ausdrücke zu erstellen. MATLAB® wertet zusammengesetzte Ausdrücke von links nach rechts aus und beachtet dabei die Operatorrangfolge.

Innerhalb des bedingten Ausdrucks eines if...end-Blocks verhalten sich die logischen Operatoren & und | wie Kurzschlussoperatoren. Dieses Verhalten ist identisch mit dem Verhalten von && bzw. ||. Da && und || in bedingten Ausdrücken und Anweisungen konsequent kurzgeschlossen werden, ist es empfehlenswert, innerhalb des Ausdrucks && und || anstelle von & und | zu verwenden. Beispiel:

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

Der erste Teil des Ausdrucks wird als falsch ausgewertet. Daher muss MATLAB den zweiten Teil des Ausdrucks nicht auswerten, was zu einem undefinierten Funktionsfehler führen würde.

Tipps

  • Sie können eine beliebige Anzahl von if-Anweisungen verschachteln. Jede if-Anweisung erfordert ein end-Schlüsselwort.

  • Vermeiden Sie das Hinzufügen eines Leerzeichens nach else innerhalb des Schlüsselworts elseif (nicht else if). Das Leerzeichen erstellt eine verschachtelte if-Anweisung, die ihr eigenes end-Schlüsselwort erfordert.

Erweiterte Fähigkeiten

C/C++ Codegenerierung
Generieren Sie C und C++ Code mit MATLAB® Coder™.

Versionsverlauf

Eingeführt vor R2006a