Übung 4: Einführung in die Programmierung mit MATLAB AUFGABE 1 Was bewirkt der Strichpunkt? - Der Strichpunkt (Semikola) unterdrück die Anzeige der (Zwischen-) Resultate. Welche Rolle spielt ans? - Wenn nichts anderes angegeben, wird das Resultat in die Variable ans gespeichert. Wie rechnet man mit Variablen in MATLAB? - Daten werden im Speicher (RAM) abgelegt. Da dieser gross und unübersichtlich ist werden Speicherplätze mit Namen versehen. Diese sind die Variablen. Wichtig hierbei ist, dass bei Variablennamen Gross- und Kleinschreibung unterschieden wird. Sind Variablen definiert (Speicherplätze benennt), kann man mit diesen Operationen ausführen lassen. Variablen erlauben also ein effizienteres Rechnen in Matlab. Wie gibt man Matrizen, Zeilen- und Spaltenvektoren in MATLAB ein? - Matrizen- und Vektorwerte werden mit eckigen Klammern [ ] umschlossen. Werte in einer Reihe werden durch Leerschläge (Space) getrennt. Einzelne Reihen werden durch Semikola (;) getrennt. Zeilenvektor: v = [1 2 3 Spaltenvektor: w = [1; 2; 3] Matrix: M = [1 2 3; 1 2 3] Matrix mit zwei Zeilen und drei Spalten Was bewirken folgende Befehle? Wozu kann man sie gebrauchen? - eye(m,n) Einheitsmatrix: Matrix mit 1ern in der Diagonalen und sonst nur Nullen eye(3,3) 3x3-Einheitsmatrix, könnte auch als eye(3) geschrieben werden 1 0 0 0 1 0 0 0 1 eye(n) Einheitsmatrix mit n Spalten und n Zeilen (quadratische Einehitsmatrix) eye(2,5) 2x5-Einheitsmatrix 1 0 0 0 0 0 1 0 0 0 - ones(2,3) 2x3-Einermatrix, Matrix mit ausschliesslich Einsen ans = 1 1 1 1 1 1 - ones(3,2) 3x2-Einermatrix ans = 1 1 1 1 1 1
- zeroes(m,n) Matrix mit ausschliesslich Nullen zeros(3,4) 3x4-Nullmatrix 0 0 0 0 0 0 0 0 0 0 0 0 - rand(m,n) erzeugt eine mxn Matrix mit Zufallszahlen rand(2,2) 2x2-Matrix mit Zufallszahlen 0.8147 0.1270 0.9058 0.9134 - Diese Matrizen sind besonders dann nützlich, wenn z.b. eine Matrix erzeugt werden soll. Diese kann einfach durch erzeugt werden. Was bewirkt der linspace-befehl? Was bedeuten die Parameter? Wozu kann er benutzt werden? - linspace(a,b,n) Vektor mit n gleich-verteilten Werten im Bereich a und b linspace(0,20,6) Vektor mit 6 gleich-verteilten Werten im Bereich 0 bis 20 linspace(1,5,5) Vektor mit 5 gleich-verteilten Werten im Bereich 1 bis 5 linspace(1,3,10) Vektor mit 10 gleich-verteilten Werten im Bereich 1 bis 3 Wo liegt der Unterschied zu obigen linspace-anweisungen? - t = linspace(a,b,n) speichert den durch linspace erzeugten Vektor in der Variable t t=linspace(-pi,pi,100) in der Variablen t wird Vektor mi 100 gleich-verteilten Werten im Bereich bis gespeichert - Doppelpunkt-Notation t = a:n:b So werden Punkte erzeugt zwischen a bis b mit Abstand n. - Bei linspace wird (neben dem Anfang- und Endwert) die Anzahl Punkte angegeben, wohingegen bei der Doppelpunktnotation die Schrittweite angegeben wird.
AUFGABE 2 Was ist der Unterschied zwischen help und doc? - help: listet alle Topics auf; gibt eine kurze Erklärung, was der Befehl macht - doc: Hilfe im Hilfe-Fenster; ist ausführlicher und gibt auch Auskunft über Syntax, mögliche Schwierigkeiten und Gebrauch - lookfor Wenn man nicht weiss, wie der Matlab-Befehl heisst, kann man mit lookfor arbeiten. Lookfor sucht alles, was thematisch zum angegebenen Begriff passt. hilft einen Befehl zu finden AUFGABE 3 Welche Matrizen und Vektoren werden mit folgenden MATLAB-Befehlen erzeugt? - A=[1 3 9; 5 10 14] Matrix mit 2 Reihen, getrennt durch Semikolon (;) - b=[2; 4] Spaltenvektor - c=[3 5] Zeilenvektor >>A=[1 3 9; 5 10 14] >>b=[2; 4] >>c=[3 5] >>d=b*c >>e=c*b >>f= A * b >>g=c*a Fehler, da die Dimensionen nicht übereinstimmen Welche Werte stehen in der Matrix R nach den Zuweisungen? - Indexierung der Matrixelemente A(i,j) spricht den Wert der Matrix A an, welcher sich in der i-ten Zeile und j- ten Spalte befindet B(m:n, k:l) spricht die Elemente die in der Matrix B in den Zeilen m bis n und den Spalten k bis l stehen an C(:, a:c) spricht alle Elemente der Matrix C in den Spalten a bis c an - Beispiel-Matrix R R= 1 2 3 4 5 6 7 8 9 0 5 4 3 2 1 0 9 8 7 6
Teilmatrizen A,B und C: >>A=R(1, 2:3) >>B=R(2:4, 1:3) >>C=R(:, 3:4) - Man kann einzelne Matrixelemente verändern indem man einem Element einen neuen wert zuweist z.b. R(1,2)= 5 oder R(3, 4:5) =[7 8] Matrix R mit veränderten Elementen: R(1,2)=5 R(3, 4:5) = [7 8] R = 1 5 3 4 5 6 7 8 9 0 5 4 3 2 1 0 9 8 7 6 R = 1 5 3 4 5 6 7 8 9 0 5 4 3 7 8 0 9 8 7 6 AUFGABE 4 >>x=linspace(0,2*pi,100) Vektor von 0 bis 2 mit 100 Stützstellen >>y=sin(x) >>plot(x,y) verkürzter Befehl: plot(x, cos(x))
Beide ins selbe Fenster >> plot(x, sin(x)) >> hold on >> plot(x, cos(x)) Drei ins selbe Fenster >> plot(x, sin(x)) >> hold on >> plot(x, cos(x)) >> plot(x, tan(x)) >> hold off
Erstelle eine Grafik für den Bereich -5 bis 5 mit Schrittlänge 0.01 für folgende Funktionen: sinh, cosh, tanh. Alle drei Kurven sollen in verschiedenen Linienarten dargestellt werden (siehe linespec). Die Grafik soll einen Titel und eine Legende haben. AUFGABE 5 >> [X,Y] = meshgrid(-2:.2:2, -2:.2:2); >> Z = X.* exp(-x.^2 Y.^2); >> surf(x,y,z) >> colormap(hot)