Datentypen

Die Nutzung von Variablen ist in MATLAB sehr intuitiv. Dies liegt daran, dass MATLAB automatisch das korrekte Speicherformat für eine Variable erkennt. So wird ein Buchstabe als solcher gespeichert und eine Zahl mit einer standardmäßigen Genauigkeit.

 

Binäre Zahlen

Die gesamte Informationsverarbeitung im Computer baut auf binären Zuständen auf, 0 und 1, Strom aus und an. Somit ist jede im Computer angezeigte Zahl als binäre Zahl hinterlegt. Die Umrechnung von binären auf dezimale Zahlen erlernen Sie in der Vorlesung GedV, weshalb hier nicht näher darauf eingegangen wird.

Die kleinste Speichereinheit im Computer ist das Bit. Ein Bit besitzt zwei Zustände 0 und 1. Somit lässt sich mit dem Speicherbereich eines Bits speichern ob eine Aussage Wahr oder Falsch ist. True wäre dabei 1 und False 0. Diesen Datentyp nennt man Boolean.

Die nächste typische Größe ist das Byte. Ein Byte besteht aus 8 Bit. Somit reicht es von 00000000 bis 11111111. In dezimalen Zahlen ausgedrückt von 0 bis 255. Es können also 28 (256) Zahlen dagestellt werden. Es ist zu beachten, dass die Null mitgezählt wird und somit der höchste dastellbare Wert nicht Anzahl an dastellbaren Zahlen entspricht.

In der Datenspeicherung typische Größen sind vielfache des Bytes wie Kilobyte, Megabyte, Gigabyte, Terabyte und Petabyte. Im Gegensatz zur üblichen Bedeutung von Kilo entspricht Kilo hier 1024, Mega 1024x1024 und so weiter.

 

Festplattenhersteller rechnen, abweichend von der eigentlich Definition von Gigabyte in der Datenspeicherung, mit den eigentlichen Bedeutungen von Kilo, Mega, etc. .

 

Datenspeicherung in Matlab

In MATLAB werden Integer Zahlen, Fließkommazahlen und Characters verwendet.

Standardmäßig speichert Matlab jede Zahl als Fließkommazahl mit double precision ab. Dies bedeutet, dass die Variable intern in folgendem Format vorliegt:

Die Speichergröße des Formats double ist 64bit, also 8byte.

Als Anhaltspunkt für die erzielbare Genauigkeit sei die kleinste Zahl die noch größer als 1 ist genannt nämlich 1,0000000000000002.

Desweiteren wird ein großer Zahlenraum abgedeckt. Die genaue Herleitung des abgedeckten Zahlenraums und der erreichbaren Genauigkeiten kann in der IEEE 754 nachgelesen werden.

Neben der Repräsentation einer Zahl als double, kann auch die Form single gewählt werden.

Die Speichergröße des Formats single ist 32bit, also 4byte.

Für die Speicherung einer Ganzzahl bietet Matlab das Format Integer an.

Das Format Integer speichert nur ganze Zahlen. Es ist möglich einen Integer Vorzeichenbehaftet oder als rein positive Zahl zu speichern.

Das Format int64 steht für einen Integer der vorzeichenbehaftet ist und eine Speicherbreite von 64bit hat. Es kann damit der Zahlenraum von -263+1 bis 263-1 abgedeckt werden. 1bit wird für die Speicherung des Vorzeichens benötigt.

Im Format uint64 wird kein Vorzeichen gespeichert, womit 264-1 die größe darstellbare Zahl ist.

Es können folgende Integer in Matlab verwendet werden: int8, int16, in32, int64 ; uint8, uint16, uint32, uint64

 

Konvertierung in Matlab

Das Speicherformat double ist in MATLAB meist die richtige Wahl und muss nicht geändert werden. Bei effektiv nutzbaren 2 Gigabyte Arbeitsspeicher bei heute üblichen PCs ist der Speicherplatzverbrauch von 8byte nahezu zu vernachlässigen. Sollten jedoch sehr große Datenmengen mit tausenden Werten gespeichert und verarbeitet werden, muss der Speicherplatzverbauch des Programmes optimiert werden und eine optimale Speicherform gefunden werden.

 

>>a = 1.93412;

>>b = 20;

>>C = ones(1000,1000);


Mit dem Befehl whos() können die Daten zu einer Variable abgefragt werden.

 

>>whos

 

Sie sehen, dass a und b den gleichen Speicherplatzbedarf haben. Die von a benötigte Genauigkeit wird vom Format double deutlich überstiegen, so dass hier eine Speicherung in single sinnvoll ist. Bei b werden keine Nachkommastellen benötigt und es kann minimal als int8 gespeichert werden.

Betrachten Sie nun den von C belegten Speicherplatz. Es werden 8000.000 Bytes an Speicherplatz belegt, dies sind etwa 7,6MB. Der Bereich in dem Sie sich Sorgen um den benötigten Speicherplatz machen müssen liegt deutlich höher, jedoch sollte dies als mögliche Fehlerquelle in Erinnerung bleiben.

 

>>a_single = single(a);

>>b_int = int8(b);

>>C_int = int8(C);

>>whos



Auch bei Matrizen und Vektoren ist das Speicherformat anpassbar.