Mo Logo [Home] [Lexikon] [Aufgaben] [Tests] [Kurse] [Begleitmaterial] [Hinweise] [Mitwirkende] [Publikationen]

Mathematik-Online-Kurs: MATLAB - Weitere Datentypen

Logische Matrizen


[vorangehende Seite] [nachfolgende Seite] [Gesamtverzeichnis][Seitenübersicht]

Logische Matrizen enthalten nur die Werte wahr bzw. falsch, welche durch die Zahlen 1 bzw. 0 repräsentiert werden. Logische Matrizen entstehen bei Verwendung der Funktionen true und false, der Relationen
== (gleich), ~= (ungleich), < (kleiner), <= (kleiner gleich), > (größer), >= (größer gleich),
als Rückgabewerte logischer Funktionen wie isempty, isinf, ischar usw. oder durch explizite Konvertierung mittels logical.

Beispiel einer logischen Matrix:

  >> L= ([1 2 3; 4 5 6; 7 8 9]<=5)
  L =
       1     1     1
       1     1     0
       0     0     0

  >> whos L
    Name      Size                    Bytes  Class
    L         3x3                         9  logical array
  Grand total is 9 elements using 9 bytes

Verfügbar sind unter anderem die folgenden logischen Operatoren bzw. Funktionen:

& (und), | (oder), ~ (Negation), and, or, not, xor, any, all

Logische Matrizen können auch zur Indizierung verwendet werden. Dabei werden jene Elemente ausgewählt, deren korrespondierende Elemente der logischen Matrix den Wert wahr besitzen. Nützlich beim Umgang mit logischen Matrizen ist auch die Funktion find, welche die Indizes jener Einträge zurück gibt, die von 0 verschieden sind.

(Autoren: Hörner/Wipper)

Erzeugung logischer Matrizen mit Hilfe von Relationen und Operatoren:
  >> M=magic(4)
  M =
      16     2     3    13
       5    11    10     8
       9     7     6    12
       4    14    15     1
  >> mod(M,2)==0
  ans =
       1     1     0     0
       0     0     1     1
       0     0     1     1
       1     1     0     0
  >> L=(M<4)|(M>12)
  L =
       1     1     1     1
       0     0     0     0
       0     0     0     0
       0     1     1     1
  >> find(L)'
  ans =
       1     5     8     9    12    13    16
  >> whos
    Name      Size                    Bytes  Class
  
    L         4x4                        16  logical array
    M         4x4                       128  double array
    ans       1x7                        56  double array
  
  Grand total is 39 elements using 200 bytes
Der Ergebnisvektor des Befehls find enthält dabei die Indizes der von 0 verschiedenen Elemente bei spaltenweiser Nummerierung der Elemente von L.

Matrizen, bei deren Definition nur die Elemente 1 und 0 verwendet werden, sind nicht automatisch logische Matrizen. Die Typumwandlung kann jedoch mit Hilfe der Funktion logical erzwungen werden:

  >> L=[0 1  1; 0 1 1]
  L =
       0     1     1
       0     1     1
  >> whos L
    Name      Size                    Bytes  Class
  
    L         2x3                        48  double array
  
  Grand total is 6 elements using 48 bytes
  
  >> L=logical(L)
  L =
       0     1     1
       0     1     1
  >> whos L
    Name      Size                    Bytes  Class
  
    L         2x3                         6  logical array
  
  Grand total is 6 elements using 6 bytes

Indizierung mit logischen Ausdrücken bzw. find-Resultaten:

  >> M(M~=7 & M<10)=0
  M =
      16     0     0    13
       0    11    10     0
       0     7     0    12
       0    14    15     0
  >> M(find(M)')
  ans =
      16    11     7    14    10    15    13    12
(Autoren: Hörner/Wipper)

[vorangehende Seite] [nachfolgende Seite] [Gesamtverzeichnis][Seitenübersicht]

  automatisch erstellt am 5.2.2008