Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

switch, case, otherwise

Ausführen einer von mehreren Anweisungsgruppen

Syntax

switch switch_expression
   case case_expression
      statements
   case case_expression
      statements
    ...
   otherwise
      statements
end

Beschreibung

switch switch_expression, case case_expression, end wertet einen Ausdruck aus und wählt anschließend eine von mehreren Anweisungsgruppen für die Ausführung aus. Jede Wahl ist ein Fall.

Der Block switch prüft jeden Fall, bis einer der Fallausdrücke wahr ist. Ein Fall ist unter folgenden Bedingungen wahr:

  • Bei Zahlen: case_expression == switch_expression.

  • Bei Zeichenvektoren: strcmp(case_expression,switch_expression) == 1.

  • Bei Objekten, die die Funktion eq unterstützen: case_expression == switch_expression. Die Ausgabe der überladenen Funktion eq muss entweder ein logischer Wert sein oder sie muss sich in einen logischen Wert konvertieren lassen.

  • Bei einem Zellenarray case_expression: mindestens eines der Elemente des Zellenarrays stimmt mit switch_expression überein, wie oben für Zahlen, Zeichenvektoren und Objekte definiert.

Wenn ein Fallausdruck wahr ist, führt MATLAB® die entsprechenden Anweisungen aus und beendet den Block switch.

Ein ausgewerteter switch_expression muss ein Skalar oder ein Zeichenvektor sein. Ein ausgewerteter case_expression muss ein Skalar, ein Zeichenvektor oder ein Zellenarray mit Skalaren oder Zeichenvektoren sein.

Der Block otherwise ist optional. MATLAB führt die Anweisungen nur aus, wenn keiner der Fälle wahr ist.

Beispiel

Beispiele

alle reduzieren

Zeigen Sie verschiedene Texte bedingt an, abhängig von einem Wert, der an der Eingabeaufforderung eingegeben wird.

n = input('Enter a number: ');

switch n
    case -1
        disp('negative one')
    case 0
        disp('zero')
    case 1
        disp('positive one')
    otherwise
        disp('other value')
end

Geben Sie an der Eingabeaufforderung die Zahl 1 ein.

positive one

Wiederholen Sie den Code und geben Sie die Zahl 3 ein.

other value

Bestimmen Sie, welcher Diagrammtyp erstellt werden soll (basierend auf dem Wert von plottype). Wenn plottype entweder 'pie' oder 'pie3' ist, erstellen Sie ein dreidimensionales Kreisdiagramm. Verwenden Sie ein Zellenarray, das beide Werte enthalten wird.

x = [12 64 24];
plottype = 'pie3';

switch plottype
    case 'bar' 
        bar(x)
        title('Bar Graph')
    case {'pie','pie3'}
        pie3(x)
        title('Pie Chart')
    otherwise
        warning('Unexpected plot type. No plot created.')
end

Tipps

  • Ein case_expression kann für den Vergleich mit dem switch_expression keine relationalen Operatoren wie < oder > berücksichtigen. Verwenden Sie für die Prüfung auf Ungleichheit die Anweisungen if, elseif, else.

  • Die MATLAB-Anweisung switch schlägt nicht fehl wie eine switch-Anweisung der Programmiersprache C. Wenn die erste case-Anweisung wahr (true) ist, führt MATLAB die anderen case-Anweisungen nicht aus. Beispiel:

    result = 52;
    
    switch(result)
       case 52
          disp('result is 52')
       case {52, 78}
          disp('result is 52 or 78')
    end
    result is 52
  • Definieren Sie alle Variablen, die für den Code erforderlich sind, in einem bestimmten Fall innerhalb dieses Falls. Da MATLAB nur einen Fall aller switch-Anweisungen ausführt, stehen Variablen, die innerhalb eines Falls definiert sind, nicht für andere Fälle zur Verfügung. Wenn Ihr aktueller Arbeitsbereich keine Variable x enthält, kann sie nur von Fällen verwendet werden, die x definieren:

    switch choice
       case 1
          x = -pi:0.01:pi;
       case 2
          % does not know anything about x
    end
  • Die MATLAB-Anweisung break beendet die Ausführung einer for- oder while-Schleife, nicht jedoch die einer switch-Anweisung. Dieses Verhalten unterscheidet sich vom Verhalten von break und switch in C.

Erweiterte Fähigkeiten

Versionsverlauf

Eingeführt vor R2006a

Siehe auch

| | |