MLTutor - Hints: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
Zeile 122: Zeile 122:
 
o = [1 1 1 1;1 1 1 1;1 1 1 1]
 
o = [1 1 1 1;1 1 1 1;1 1 1 1]
 
wobei hier der Strichpunkt die Zeilen trennt.
 
wobei hier der Strichpunkt die Zeilen trennt.
  +
  +
= Links =
  +
  +
Folgende Linkarten sind vordefiniert:
  +
  +
{| style="background:#efefef;" border="1" cellpadding="5" cellspacing="0" align="center"
  +
|-
  +
| mltutor://Projektname
  +
| Interner Link zu MLTutor Projekt
  +
|-
  +
| matref://Funktionsname
  +
| Link zu Matlab Hilfe wird zu http://itp.tugraz.at/matlab/techdoc/ref/sin.html
  +
|-
  +
| itpwiki://Wikieintrag
  +
| Link zu ITP Wiki
  +
|-
  +
| appsoftkapitel://7
  +
| Link zu Applikationssoftwareskriptum Kapitel 7
  +
|-
  +
| appsoftskriptum
  +
| Link zu Applikationssoftwareskriptum
  +
|-
  +
|}

Version vom 17. Februar 2006, 12:16 Uhr

Workspace

clear

Mit dem Befehl clear können lokale und globale Variablen im Matlab-Wokspace gelöscht werden. Bei allen Übungsabgaben soll das nicht gemacht werden. In MLTutor-Tests ist der Befehl clear lahm gelegt und mit der Variablen MLTutor_CLEAR_COUNT kann gezählt werden, wie oft clear verwendet wird.

Formatierung

Strichpunkt

Matlab Skripts und Funktionen sollten so geschrieben werden, dass sie keine Ausgabe am Schirm machen, die nicht explizit durch disp oder fprintf im Program veranlasst wird. Daher muss man am Ende von Anweisungen, die eine Ausgabe erzeugen einen Strichpunkt verwenden.

Korrekt:

x = 1:5; 
y = x.^2;
plot(x,y)

Ebenfalls korrekt sind Befehle in einer Zeile:

x = 1:5; y = x.^2; plot(x,y)

Ebenfalls korrekt, da jetzt auch Ausgabe vom Befehl plot:

x = 1:5; y = x.^2; ph=plot(x,y);

Syntax korrekt, erzeugt aber unerwünschte Ausgabe:

x = 1:5
y = x.^2
plot(x,y)

Syntax korrekt, erzeugt aber unerwünschte Ausgabe, da Beistrich satt Strichpunkt als Trennzeichen verwendet wird:

x = 1:5, y = x.^2, plot(x,y)

Syntax nicht korrekt, da Befehle in einer Zeile nicht einfach aneinander gereiht werden können:

x = 1:5 y = x.^2 plot(x,y)

In MLTutor Tests können fehlende Strichpunkte an Hand der Variablen MLTutor_DISPLAY_COUNT überprüft werden. Ist dieser Wert nicht Null fehlen Strichpunkte. Alle Übungsabgaben sollen so geschrieben sein, dass sie keine fehlenden Strichpunkte enthalten.

Kommentare

Kommentare kann man in Matlab schreiben, wenn man das Zeichen % verwendet. Das kann am Anfang der Zeile oder aber nach Befehlen gemacht werden:

% Initialisieren von Werten
x_start = 0; % Startwert
x_end = pi; % Endwert

Kommentare sollen sinnvoll zur Dokumentation von Programmen eingesetzt werden.

Hilfe

Der erste zusammenhängende Block von Kommentarzeilen in einem Skript oder einer Funktion wird bei Verwendung des Befehls help am Schirm ausgegeben. Dieser Text soll über den Aufruf bzw. die Aufgaben eines Matlab-Skrips oder einer Matlab-Funktion Auskunft geben:

function h = secansh(x,x_0,s)
% Funktion: secansh
% Aufruf: h = secansh(x,x_0,s)
% Berechnet fuer den Vektor x die Werte der normierten Secans Hyperbolicus 
% Funktion mit dem Maximum bei x_0 und mit der Halbwertsbreite s
% Input:  Vektor x, Skalar x_0, Skalar s
% Output: Vektor h(x)
%
% Name: Winfried Kernbichler
% Datum: 15.02.2006

% Beginn des eigentlichen Programms
h = ...

Unter der Annahme, dass dieses Programm im File secansh.m abgespeichert ist, liefert der Befehl help secansh die Zeilen

Funktion: secansh
Aufruf: h = secansh(x,x_0,s)
Berechnet fuer den Vektor x die Werte der normierten Secans Hyperbolicus 
Funktion mit dem Maximum bei x_0 und mit der Halbwertsbreite s
Input:  Vektor x, Skalar x_0, Skalar s
Output: Vektor h(x)

Name: Winfried Kernbichler
Datum: 15.02.2006

als Output am Schirm.

Solche Hilfetexte sollen bei allen Übungsbeispielen erstellt werden, manchesmal wird der Inhalt explizit überprüft. Dies wird aber in der Angabe zur Übung festgehalten.

disp

Formatierte Ausgabe am Schirm wird am einfachsten mit dem Befehl disp gemacht.

disp('Kernbichler')
name = 'Kernbichler'; disp(name)

gibt in beiden Fällen die Zeichenkette (string)

Kernbichler

aus.

Skalare, Vektoren, Matrizen können natürlich auch mit disp ausgegeben werden. So liefert

n = 5; disp(n) % Skalar
    5

z = 1:5; disp(z) % Zeilenvektor
    1     2     3     4     5

s = z.'; disp(s) % Spaltenvektor; z.' bedeutet transpose(z)
    1
    2
    3
    4
    5

o = ones(3,4); disp(o)
    1     1     1     1
    1     1     1     1
    1     1     1     1

Will man die Ausgabe von Zahlen mit der Ausgabe von Zeichen kombinieren, muss man die Zahlen in Zeichen verwandeln. Dazu gibt es unter anderem die Befehle num2str und mat2str. Damit kann man schreiben:

disp(['n = ',num2str(n)])
    n = 5

disp(['v = ',num2str(v)]) 
    v = 1  2  3  4  5

Die Klammern [] verbinden mehrere Zeichenketten zu einer

str1 = 'Mein'; str2 = 'Name';
str3 = [str1,str2]; disp(str3)
    MeinName

str3 = [str1,' ',str2]; disp(str3) % Mit Leerzeichen
    Mein Name

Die Befehle

disp(['s = ',num2str(s)])
disp(['o = ',num2str(o)])

würden Fehler der Art

??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the same number of rows.

liefern, da man nicht Variablen mit einer verschiedenen Anzahl von Zeilen nebeneinandet verbinden kann. Hier kann man sich mit mat2str behelfen

disp(['s = ',mat2str(s)])
    v = [1;2;3;4;5]

disp(['o = ',mat2str(o)])
    o = [1 1 1 1;1 1 1 1;1 1 1 1]

wobei hier der Strichpunkt die Zeilen trennt.

Links

Folgende Linkarten sind vordefiniert:

mltutor://Projektname Interner Link zu MLTutor Projekt
matref://Funktionsname Link zu Matlab Hilfe wird zu http://itp.tugraz.at/matlab/techdoc/ref/sin.html
itpwiki://Wikieintrag Link zu ITP Wiki
appsoftkapitel://7 Link zu Applikationssoftwareskriptum Kapitel 7
appsoftskriptum Link zu Applikationssoftwareskriptum