In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können
Matlab Scripte sind Textdateien, die Anweisungen für den Matlab interpreter enthalten
Sie lassen sich am einfachsten mit Matlab selbst ausführen.
Screenshot von Matlab in der Standardkonfiguration
Für eine Hello World erstellen wir eine Textdatei Hello.m
mit dem Inhalt:
disp("Hello World");
disp("Hello World");
disp("Und Tschuess");
Hallo World
Und Tschuess
Matlab kann Anweisungen auf 2 verschiedene Arten abschliesen:
Das Semikolon unterdrückt dabei die Ausgabe der Anweisung. Das ist das normalerweise gewünschte Verhalten
Bei einem Zeilenumbruch ohne Semilkolon wird das das Ergebnis der Anweisung angezeigt. Dies ist zur Fehlersuche in kleinen Programmen nützlich, wird aber schnell unübersichtlich.
Programmiersprachen besitzen die wichtige Fähigkeit Variablen zu speichern.
Platz im Hauptspeicher der einen Namen erhalten hat und darüber ansprechbar ist. Vergleichbar mit einer Box die einen Namen und einen Inhalt hat.
Jede Variable hat neben Name und Inhalt auch einen Typ.
Gibt an, ob in der Variablen eine Zeichenkette, eine ganze Zahl, eine reelle Zahl oder etwas anderes gespeichert werden kann. Wir unterscheiden in Matlab:
Die 5 wichtigsten numerischen Typen in Matlab sind:
Neben den numerischen Typen gibt es noch 2 Textuelle Typen. Achtung Mit diesen Typen können Sie keine Berechnungen durchführen
Nutzt die Standard System Codierung
Bei unserem Beispiel von eben:
Name | Typ | Wert (Inhalt) |
---|---|---|
greeting | string (Zeichenkette) | Hello. |
hour | int (Ganzzahl) | 11 |
minute | int (Ganzzahl) | 59 |
Um eine Variable zu erzeugen muss Sie zunächst deklariert werden. Dies passiert in Matlab impliziet bei der ersten Zuweisung der Variablen
myVariable = 5
myVariable
nicht vorhanden wird sie angelegt (Deklaration)myVariable
wird auf der Speicheraddresse ein neuer Wert gespeichert (Zuweisung)disp(a); % Output: Undefined function or variable 'a'.
Matlab “rät” den Datentyp bei der Zuweisung
a=4;
b=4.5;
c='hallo';
d="Welt";
<span class='fragment color-red’
Welche Datentypen haben die Variablen?
whos
Kommando.a=4;b=4.5;c='hallo';d="Welt";
whos a b c d
Ausgabe:
Name Size Bytes Class Attributes
a 1x1 8 double
b 1x1 8 double
c 1x5 10 char
d 1x1 158 string
Matlab speichert alle Zahlen intern als Double
*a=int32(4);
*b=double(4.5);
c='hallo';d="Welt";
whos a b c d
Ausgabe:
Name Size Bytes Class Attributes
* a 1x1 4 int32
b 1x1 8 double
c 1x5 10 char
d 1x1 158 string
Zwingende Regeln und Einschränkungen durch Code Conventions
Zwingende Regeln und Einschränkungen durch Code Conventions
wortZaehler
heißen.wort_zaehler
geschrieben.disp(hour);
Wichtig: Hier wird nicht der Text „hour“ ausgegeben, sondern der Wert der Variablen hour !
Um einer Variablen einen Wert zu zuweisen, verwenden wir den Wertzuweisungsoperator „=“.
minute = 5;
Wichtig: Die Variable auf der linken Seite erhält das Ergebnis des Ausdrucks auf der rechten Seite. Es handelt sich dabei nicht um eine mathematische Gleichung! Deshalb ist auch Folgendes möglich:
minute = minute + 5;
minute = minute + 5;
+, -, *, /
minute = 5 + 20 / 4 – 23 * 12;
Programm, das den Kehrwert einer Zahl a berechnet:
a = 7;
a = 1 / a;
disp(a);
Ergebnis → 0.14285714285714285
Operationen sind auch innerhalb eines Methodenaufrufs möglich:
disp(2+5);
Beispiel: a = 3.7 + 4 * 2;
Hier stehen drei Zahlen direkt im Code. Solche Werte heißen Literale. Literale haben neben ihrem Wert auch einen Typ, der sich aus ihrer Schreibweise ergibt.
Es gibt double-, boolean-, char-, und string-Literale.
Typ | Literal | Beispiele |
---|---|---|
double |
Reine Zahl | 23 -42 23.5 -42. 1e5 4E-3 |
boolean |
“true” oder “false” | true false |
char |
Zeichen in einzelnen Hochkommata | ‘a’ ‘3’ |
string |
Zeichenkette in doppelten Hochkommata | “a” “3” “Hallo” |
Das Ergebnis einer Division von 2 Integer-Zahlen ist selbst auch eine Integer-Zahl
a=int32(5);
b=int32(11);
c=a/b;
disp(c);
Ausgabe: 1
Da Integer Werte keine Dezimalstellen speichern können rundet Matlab das Ergebnis
Um ein exaktes Ergebnis zu erhalten braucht man den Code:
a=int32(5);
b=int32(11);
c=double(a)/double(b);
disp(c);
Wie aus der Schule bekannt, gibt es bei einzelnen Operationen eine Hierarchie.
“Punkt- vor Strichrechnung”
Um die Auswertungsreihenfolge zu ändern, dürfen Klammern gesetzt werden.
Beispiel
a = 3 + 4 * 2; %→ ergibt 11
b = (3 + 4) * 2; %→ ergibt 14
Bei mehreren Operationen wird von links nach rechts ausgeführt.
Für Strings gibt es einen einzigen Operator: +
disp("Hallo" +"welt");
% Ausgabe "Hallowelt"
Ist ein Argument eines +
-Ausdrucks ein String, so werden alle
anderen Summanden automatisch in String umgewandelt.
a=int32(5);
b=10
disp("a=" + a + ",b=" + b); % Ausgabe: a=5,b=10
Definition Definition Ein Kommentar ist ein Stück Text, der erklärt, was ein Programm an dieser Stelle tut. Java selbst ignoriert die Kommentare beim Kompilieren.
% Zeilenkommentar
disp("Hallo"); % Weiterer Zeilenkommentar
Blockkommentare: Blockkommentare beginnen mit „%{“ und enden mit „}%“. Alle Zeichen dazwischen zählen als Kommentar.
%{
Das ist
ein grosser
Blockkommentar
}%
Ausgabe von Daten
disp()
.Einlesen von Daten
a = input("Bitte eine Wert für a eingeben:");
s = input("Bitte eine Zeichenkette eingeben", `s`);
input()
,input(string)
: Die Eingabe des Nutzers wird als Literal interpretiert.input(string,s
)
: Die Eingabe wird als String ohne Interpretation gespeichertMatlab bietet eine Reihe von Mathematischen Funktionen. Eine Liste finden Sie in der Dokumentation hier.
zum Beispiel:
x = 25;
y = sin(x); % sinus, Achtung Bogenmaß
y = cos(x); % cosinus, Achtung Bogenmaß
y = sqrt(x); % wurzel
y = abs(x); % Betrag
% ...
Nehmen wir an, wir benötigen eine Funktion, die den Abstand eines Punktes (x/y) im zweidimensionalen Raum zum Koordinatenursprung berechnet. Die mathematische Funktion ist:
$$f(x,y)=\sqrt{x^2+y^2}$$
Das eigentliche Script was die Funktion benutzt sieht dann wie folgt aus:
xK = 3.2;
yK = 5.7;
d = getDistance(xK, yK);
disp(d);
function d = getDistance(x,y)
d = sqrt(x^2+y^2);
end
Die Erste Zeile wird Kopfzeile, Signatur oder Deklaration der Funktion genannt.
Bedeutung der Signatur:
function
: Schlüsselwort um die Deklaration einer Funktion einzuleitend
: Variabelname für das ErgebnissgetDistance
: Name der Funktion, frei vom Programmierer wählbar(x,y)
: In Klammern stehen die beiden Übergabeparameter. Für jeden Parameter wird der Variablenname angegeben. Die übergebenen Werte werden in diese Variablen kopiert und können innerhalb der Methode unter den entsprechenden Namen angesprochen werden.Funktionen werden in Matlab in der Regel am Ende eines Scripts deklariert.
Ihr Script enthält nur Funktionsdeklarationen. Dann muss der Name der ersten Funktion mit dem Dateinamen übereinstimmen
Wenn die Funktion nicht an der richtigen Stelle ist erscheint folgende Fehlermeldung:
Error: File: Demo.m Line: 5 Column: 1
This statement is not inside any function.
(It follows the END that terminates the definition of the function "getDistance".)
Vermeidung von doppeltem Code
Das EVA-Prinzip ist ein wichtiger Grundsatz in der Softwareentwicklung:
Wir betrachten ein kleines Programm, das zwei Gleitkommazahlen x und y einliest und die Distanzfunktion verwendet.
% Eingabe
xK = input("Bitte x Koordinate eingeben:");
yK = input("Bitte y Koordinate eingeben:");
% Verarbeitung
d = getDistance(xK, yK);
% Ausgabe
disp(d);
function d = getDistance(x,y)
d = sqrt(x^2+y^2);
end
Ein Feld (englisch field, array
[əˈɹeɪ]
(Betonung auf 2. Silbe) für ‚Anordnung‘, ‚Aufstellung‘ usw.) ist in der Informatik eine Datenstruktur-Variante, mit deren Verwendung „viele gleichartig strukturierte Daten […] verarbeitet werden sollen“.[1] Der Zugriff auf bestimmte Inhalte eines Felds erfolgt mit Hilfe von Indizes, die dessen Position bezeichnen. Wikipedia, 2018
[1]: Programmieren in Fortran, Uni Bayreuth
v1=1;v2=[1 2];
whos v1 v2
Ausgabe:
Name Size Bytes Class Attributes
v1 1x1 8 double
v2 1x2 16 double
Um einen Array anzulegen, benutzen sie []
und schreiben die
Elemente einfach mit Leerzeichen oder ,
getrennt hinein:
a = [1 2 3 4]
Um mehrer Zeilen anzulegen benutzen Sie ;
a = [1 2 3; 4 5 6; 7 8 10]
Eine Matrix mit 0
lässt sich mit der Funktion zeros(zeilen,spalten)
erzeugen.
a = zeros(5,1)
Die meisten Arithmetischen Operatoren werden Elementweise auf eine Matrix angewendet:
a+10 % mit a = [1 2 3; 4 5 6; 7 8 10]
Ausgabe:
ans = 3×3
11 12 13
14 15 16
17 18 20
Das gleiche gilt für +,-,*,/
Das funktioniert auch bei skalaren Funktionen
sin(a) % mit a = [1 2 3; 4 5 6; 7 8 10]
Ausgabe:
ans = 3×3
0.8415 0.9093 0.1411
-0.7568 -0.9589 -0.2794
0.6570 0.9894 -0.5440
Das gleiche gilt für cos(),sqrt()...
Matrizen lassen sich mit '
transponieren (Vertauschen von Zeilen und Spalten)
a' % mit a = [1 2 3; 4 5 6; 7 8 10]
Ausgabe:
ans = 3×3
1 4 7
2 5 8
3 6 10
inv()
bestimmenp = a*inv(a)
Ausgabe: (double
Ungenauigkeit)
p = 3×3
1.000000000000000 0 -0.000000000000000
0 1.000000000000000 0
0 0 0.999999999999998
<Matrix>*<Vektor>
%Lösung eines linearen Gleichungssystems ( A*x = b)
x=inv(A)*b
Das Zusammenfügen von 2 Matritzen geht analog zur Definition.
A = [a,a]
A = [a; a]
Für die folgenden Beispiele benutzen wir folgende Matrix:
A = magic(4)
Ausgabe:
A = 4×4
16 2 3 13
5 11 10 8
9 7 6 12
4 14 15 1
Einzelne Elemente der Matrix sind über Indizes zugreifbar
A(4,2) % Zeile 4 Spalte 2 -> 14
Über die gleiche Art und Weise lassen sich auch einzelne Elemente verändern
A(4,5) = 17 % Zeile 4 Spalte 5
Da die Matrix nur 4 Spalten hat wird die Matrix erweitert:
A = 4×5
16 2 3 13 0
5 11 10 8 0
9 7 6 12 0
4 14 15 1 17
Über Anfang:Ende
lässt sich ein Teilbereich von einer Matrix ausgeben/setzen
A = 4×5
<span style="color:#ae81ff">16</span> <span style="color:#ae81ff">2</span> <span style="color:#ae81ff">3</span> <span style="color:#ae81ff">13</span> <span style="color:#ae81ff">0</span>
<span style="color:#ae81ff">5</span> <span style="color:#ae81ff">11</span> <span style="color:#ae81ff">10</span> <span style="color:#ae81ff">8</span> <span style="color:#ae81ff">0</span>
<span style="color:#ae81ff">9</span> <span style="color:#ae81ff">7</span> <span style="color:#ae81ff">6</span> <span style="color:#ae81ff">12</span> <span style="color:#ae81ff">0</span>
<span style="color:#ae81ff">4</span> <span style="color:#ae81ff">14</span> <span style="color:#ae81ff">15</span> <span style="color:#ae81ff">1</span> <span style="color:#ae81ff">17</span>
A(1:3,2)
Ausgabe:
ans = 3×1
2
11
7
Mit einem einzelnen :
, ohne Anfang und Ende, lässt sich auf die komplette
Zeile/Spalte zugreifen
Eingabe:
A(3,:)
Ausgabe:
ans = 1×5
9 7 6 12 0
In diesem Kapitel geht es darum folgende Dinge zu verstehen und zu können
In einem Matlab Skript kann abhänig von einem Kriterium eine Entweder-oder-Entscheidung getroffen werden
D.h. ENTWEDER einen Programmteil “A” ausführen ODER einen anderen Programmteil “B”
An einem Beispiel lässt es sich leicht nachvollziehen:
%...
if (note < 5)
disp("Bestanden");
else
disp("Durchgefallen");
end
disp("Verzweigung beendet");
Der else-Teil ist nicht zwingend erforderlich. Benötigt man die Meldung “Durchgefallen” nicht, kann man auch schreiben:
%...
if (note < 5)
disp("Bestanden");
end
disp("Verzweigung beendet");
Dies nennt man “Einseitige” Auswahl im Gegensatz zur “Zweiseitigen” Auswahl.
Wenn wir umgekehrt den if-Zweig („ja-Zweig“) weglassen und nur den else-Zweig („nein-Zweig“) implementieren wollen, wird es etwas schwieriger.
if (note < 5) % kein guter Stil
else
disp("Durchgefallen");
end
disp("Verzweigung beendet");
Dies ist jedoch ausgesprochen schlechter Stil! Besser: Wir kehren die Bedingung um.
if (note >= 5)
disp("Durchgefallen");
end
disp("Verzweigung beendet");
Was steht eigentlich als Bedingung in den Klammern?
Matlab kennt Wahrheitwerte nicht als Variablentyp. Daher wird jeder Wert einer Variablen
grundsätzlich als true
interpretiert. Es gibt die Funktion logical()
um eine logische Auswertung zu erzwingen. Die einzige Ausnahme ist 0
.
In Matlab gilt:
matlab | Boolsche Logik |
---|---|
logical(1) |
true |
logical(0) |
false |
a=5;
b=a==4;disp(b); % ergibt false für a = 5
c=a==a;disp(c); % ergibt immer true
Operator | Funktion |
---|---|
== |
prüft auf Gleichheit |
~= |
prüft auf Ungleichheit |
> , >= |
größer bzw. größer gleich |
< , <= |
kleiner bzw. kleiner gleich |
Um mehrere Bedingungn miteinander zu verknüpfen benötigt man logische Operatoren. Die wichtigsten sind:
Operator | Funktion |
---|---|
&& |
UND |
││ |
ODER |
~ |
NICHT |
xor |
eXklusives-Oder |
a && b
ist true, falls a und b true sind.a || b
ist true, falls a oder b true ist.a xor b
ist true, falls a und b nicht die gleichen Werte haben (xor-Operation).+ - * / < > <= >= == ~= ~ && || xor
Für diese Operatoren muss eine eindeutige Abarbeitungs-Reihenfolge gelten.
⇒ Die „Punkt- vor Strichrechnung“ wird zu einer Operatorhierarchie erweitert! (Vorrang nimmt ab)
~ -
(Vorzeichen)* /
+ -
< > <= >=
== ~=
xor
&&
||
Es kann passieren, dass es mehr als zwei Fälle gibt, die unterschiedlich behandelt werden müssen.
In diesem Fall schachtelt man mehrere if-Anweisungen ineinander und erhält eine sogenannte if-else-Kaskade.
if (note == 1)
disp("sehr gut");
elseif (note == 2)
disp("gut");
elseif (note == 3)
disp("befriedigend");
elseif (note == 4)
disp("ausreichend");
elseif (note == 5)
disp("mangelhaft");
else
disp("Fehler im Programm");
end
In allen neueren Sprachen, gibt es eine Verzweigung, die, abhängig von einer Integer-Variablen, einen von mehreren Programmblöcken anspringt.
Die if-else-Kaskade ist ein Beispiel dafür. Für dieses Sprachenelement gibt es auch ein entsprechendes
Struktogramm:
switch
-AnweisungIn anderen Sprachen ist die switch-Anweisung auch als case- oder select-Anweisung bekannt.
Die Anweisung beginnt in der ersten Zeile mit dem Schlüsselwort
switch
, gefolgt von der Variablen, dessen Wert für die Verzweigung
verwendet wird.
switch note
Es folgt für jede Note ein case
-Block. Er besteht aus dem
Schlüsselwort case
, gefolgt von dem Wert, für den der Block
ausgeführt werden soll
case 1
Es folgen die Anweisungen für den Block, ohne geschweifte Klammern.
switch
-Anweisungswitch (note)
case 1
disp("sehr gut");
case 2
disp("gut");
case 3
disp("befriedigend");
case 4
disp("ausreichend");
case 5
disp("mangelhaft");
otherwise
disp("Fehler.");
end % switch
Der otherwise
-Block ist optional und wird nur ausgeführt, wenn kein
anderer case ausgeführt wurde.
switch
Um Bereiche für einen bestimmten Fall festzulegen muss man die if-else-Kaskade nutzen.
if (windgeschwindigkeit <= 2)
disp("Windstille");
elseif (windgeschwindigkeit <= 45)
disp("schwacher Wind");
elseif (windgeschwindigkeit <= 75)
disp("starker Wind");
elseif (windgeschwindigkeit <= 120)
disp("Sturm");
elseif (windgeschwindigkeit <= 200)
disp("Orkan");
else
disp("Messgeraet kaputt, weil Wind zu stark");
end
Beispiel zur Einführung
Es soll ein Programm geschrieben werden, das einen Countdown simuliert. Es sollen nacheinander die Werte von 10 bis 0 auf dem Bildschirm ausgegeben werden.
Mit bisherigen Mitteln:
disp(10);
disp(9);
disp(8);
% ...
disp(1);
disp(0);
-> Es werden 11 fast gleiche Zeilen ausgeführt.
-> Wir brauchen etwas wie:Führe die Zeile disp(i)
nacheinander mit i = 10, 9, 8, …, 1, 0 aus.
Struktogramm
Alternative:
for
-SchleifeZählschleifen werden mit dem Schlüsselwort for
eingeleitet.
for i=10:1:20
disp(i);
end
Dem Schlüsselwort folgt eine Parameterliste, die in einer runden Klammer zusammengefasst ist. Sie besteht aus 3-4 Teilen, die jeweils getrennt sind:
=
for
-SchleifeDas folgende Flussdiagramm veranschaulicht die Reihenfolge der Abarbeitung:
Wie würde unser Countdown-Programm aussehen?
for
for i=10:-1:0
disp(i);
end
Es ist möglich, die Laufvariable im Schleifenkörper zu ändern.
Beispiel:
for i=10:-1:0
i = i - 2;
disp(i);
end
While
-Schleife⇒ Man verwendet eine kopfgesteuerte Schleife.
while( Bedingung )
Anweisungsblock
end
Der Anweisungsblock wird ausgeführt, solange die Bedingung true
ist.
Struktogramm:
found=false;
counter=0;
while (~found && counter<5)
counter=counter+1;
zufall=round(6*rand(1)); % Erzeugen der Zufallszahl
found=(zufall==4);
disp('counter = '+counter+' Zufallszahl gerundet: '+zufall);
end
Was macht dieses Programm ?
for
⇌ while
for-Schleifen sind nur eine Kurzform für while-Schleifen!
for i=0:2:10
disp(i);
end;
i=0
while (i<=10)
disp(i);
i+=2;
end
for- und while-Schleifen lassen sich immer gegenseitig umwandeln.
Grundregel: for-Schleifen werden nur bei wirklichen Zählschleifen eingesetzt, ansonsten werden kopfgesteuerte Schleifen benutzt!
Es ist möglich auch mehrere Schleifen zu verschachteln:
for i = 0:2:10
out = "";
for j = 0:1:i
out = out + "*";
end;
disp(out);
end;
Ausgabe:
**
****
******
********
**********
Eines der häufig genutzten Austauschformate für Daten ist CSV:
LastName,Gender,Age,Height,Weight,Smoker
Smith,M,38,71,176,1
Johnson,M,43,69,163,0
Williams,F,38,64,131,0
Jones,F,40,67,133,0
Brown,F,49,64,119,0
Diese Datei wird für alle folgenden Beispiele verwendet. Wir nehmen an, dass die Datei im gleichen
Verzeichnis wie die Beispiel-Programme gespeichert sind und den Dateinamen Daten.csv
hat.
Tabellarisch strukturierte Daten können mit readtable()
eingelesen werden
T = readtable("Daten.csv")
Ausgabe:
T=5×6 table
LastName Gender Age Height Weight Smoker
__________ ______ ___ ______ ______ ______
'Smith' 'M' 38 71 176 1
'Johnson' 'M' 43 69 163 0
'Williams' 'F' 38 64 131 0
'Jones' 'F' 40 67 133 0
'Brown' 'F' 49 64 119 0
Grundsätzlich verhalten sich Tabellen in Matlab wie Matrizen, bieten aber einen einfacheren Zugriff auf einzelne Spalten:
T(:,3)
ans =
5×1 table
Age
___
<span style="color:#ae81ff">38</span>
<span style="color:#ae81ff">43</span>
<span style="color:#ae81ff">38</span>
<span style="color:#ae81ff">40</span>
<span style="color:#ae81ff">49</span>
T.Age
ans =
<span style="color:#ae81ff">38</span>
<span style="color:#ae81ff">43</span>
<span style="color:#ae81ff">38</span>
<span style="color:#ae81ff">40</span>
<span style="color:#ae81ff">49</span>
Zu beachten ist das in der linken Variante die Überschrift noch Teil der Daten ist.
readtable()
verarbeitet neben dem eigentlichen Dateinamen Optionen, die als name
und wert
angegeben werden:
function table=readtable(filename,name,wert)
table=readtable("Daten.csv","Delimiter"," ") % Wenn die Daten mit einen ' ' statt ',' getrennt sind
table = readtable("Daten.csv",...% Durch ... ist es möglich einen Befehl in der nächsten Zeile fortzusetzen
"Delimiter"," ","ReadVariableNames",false) % Setzt Delimiter=' ' und ReadVariableNames=false
ReadVariableNames
sorgt dafür, dass die Spaltenüberschriften nicht eingelesen/abgespeichert werden. Stattdessen heißen die variablen dann Var1
, Var2
, Var3
bis VarN
.
Parameter-Name | Standard-Wert |
---|---|
Delimiter | {','} |
Whitespace | ‘\b\t ' |
LineEnding | {'\n’ ‘\r’ ‘\r\n’} |
CommentStyle | {} |
ConsecutiveDelimitersRule | ‘split’ |
LeadingDelimitersRule | ‘keep’ |
EmptyLineRule | ‘skip’ |
Encoding | ‘UTF-8’ |
ReadVariableNames | true |
Normalerweise versucht Matlab selbstständig den Datentyp des eingelesenen Inhalts zu bestimmen.
Dieser lässt sich aber auch über den Parameter Format
festlegen:
function T = readtable(filename,'Format','%s%s%u%f%f%s')
%s
: String (char)%u
: Positive Ganzzahl (uint32)%f
: Fließkommazahl (double)Eine Beispielzeile der eingegebenen Datei könnte z.B. so aussehen:
Klaus, Mustermann, 32, 1034.21, 37.5, IT-Abteilung
Weitere Informationen und Beispiele unter:
Analog zum Einlesen von Dateien gibt es auch eine Funktion writetable()
zum Erzeugen von Dateien
writetable(T,"myData.csv");
Auch hier gibt es wieder einige Einstellungen
Parameter-Name | Beispiel-Wert |
---|---|
Delimiter | ‘,’ |
WriteRowNames | true |
QuoteStrings | true |
Encoding | ‘UTF-8’ |
DateLocale | ‘de_DE’ |
t=table([1;2;3],["eins";"zwei";"drei"])
Erzeugt:
t =
3×2 table
Var1 Var2
____ ______
1 "eins"
2 "zwei"
3 "drei"
Sollen die Variablen Namen gesetzt werden müssen die Spalten vorher auf Variablen gespeichert werden
zahlen=[1;2;3];
worte=["eins";"zwei";"drei"];
t=table(zahlen,worte);
disp(t)
Ausgabe:
zahlen worte
______ ______
1 "eins"
2 "zwei"
3 "drei"
Weitere Informationen und Beispiele unter: