Benutzer-Werkzeuge

Webseiten-Werkzeuge


matlab

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
matlab [2013/06/28 12:20] – [Animationen erstellen] ollimatlab [2023/02/26 10:20] – [Links] olli
Zeile 1: Zeile 1:
 ====== Matlab ====== ====== Matlab ======
 +Matlab ist eine Mathematik-Software der Firma Mathworks
 ===== Dynamische Variablennamen ===== ===== Dynamische Variablennamen =====
 Um einen Wert einer Variable mit dynamischem Namen zuzuweisen: Um einen Wert einer Variable mit dynamischem Namen zuzuweisen:
Zeile 31: Zeile 32:
 Um zu prüfen, ob eine Variablen von einem definierten Typ ist gibt es z.B. Um zu prüfen, ob eine Variablen von einem definierten Typ ist gibt es z.B.
 <code matlab> <code matlab>
-isa(x,'sym')+isa(x,'sym'%issymbolic(x) existiert nicht
 ischar(x) ischar(x)
 isfloat(x) isfloat(x)
Zeile 80: Zeile 81:
 </code> </code>
  
 +===== Fehler beim Aufruf von Ghostscript aus MATLAB =====
 +Viele Matlab-Skripte zum Erzeugen von hochqualitiven Plots für Veröffentlichungen, wie z.B. [[http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig|export_fig]] (und andere) rufen [[Ghostscript]] direkt aus MATLAB auf. Dabei kann es zu folgendem Fehler kommen:
 +<code>
 +Error: /undefined in /findfont
 +Operand stack:
 +120 Helvetica ISOLatin1Encoding Helvetica Helvetica
 +Execution stack:
 +%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1916 1 3 %oparray_pop 1915 1 3 %oparray_pop --nostringval-- 1899 1 3 %oparray_pop 1787 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- 1868 5 5 %oparray_pop
 +Dictionary stack:
 +--dict:1180/1684(ro)(G)-- --dict:0/20(G)-- --dict:82/200(L)-- --dict:97/160(L)-- --dict:9/85(L)--
 +Current allocation mode is local
 +Current file position is 10662
 +GPL Ghostscript 9.07: Unrecoverable error, exit code 1 
 +</code>
 +Das Problem ist, das MATLAB den LD_LIBRARY_PATH für seine Zwecke so verändert, das Ghostscript nicht mehr funktionsfähig ist. Vor dem Aufruf von Ghostscript muss LD_LIBRARY_PATH wieder geleert werden. Für export_fig muss in der Datei ghostscript.m die Zeile
 +<code matlab>
 +system(sprintf('"%s" %s', gs_path, cmd));
 +</code>
 +durch
 +<code matlab>
 +system(sprintf('export LD_LIBRARY_PATH=""; "%s" %s', gs_path, cmd));
 +</code>
 +ersetzt werden.
 ===== Ausgabe von fsolve ===== ===== Ausgabe von fsolve =====
 Nach der Ausführung von fsolve gibt die Funktion Informationen zur Lösung aus. Wenn das störend ist, kann die Ausgabe mit der Option "display off" unterdrückt werden:  Nach der Ausführung von fsolve gibt die Funktion Informationen zur Lösung aus. Wenn das störend ist, kann die Ausgabe mit der Option "display off" unterdrückt werden: 
Zeile 126: Zeile 150:
  
 Die zugewiesenen DisplayNames lassen sich auch im Property Editor von Matlab anzeigen. Die zugewiesenen DisplayNames lassen sich auch im Property Editor von Matlab anzeigen.
 +
 +===== Keine LaTeX-Interpretation (z.B. Tiefstellung) in Plotbeschriftung  =====
 +Standardmäßig verwendet MATLAB einige [[LaTeX]]-ähnliche Befehle zur Textformatierung, z.B. den Unterstrich "_" zum Tiefstellen. Möchte man dies nicht, kann dies für einzelne Elemente oder global deaktivieren.
 +
 +Für einzelne Titel:
 +<code matlab>
 +title(text, 'interpreter', 'none')
 +</code>
 +
 +Für einzelne Legenden (Einträge als Cell Array):
 +<code matlab>
 +legend({'text_1', 'text_2'}, 'Interpreter', 'none');
 +</code>
 +
 +Für einzelne Legenden (mehrere Strings als Einträge):
 +<code matlab>
 +l = legend('text_1', 'text_2');
 +set(l, 'Interpreter', 'none')
 +</code>
 +
 +Global:
 +<code matlab>
 +set(0, 'DefaulttextInterpreter', 'none')
 +</code>
  
 ===== Animationen erstellen ===== ===== Animationen erstellen =====
Zeile 141: Zeile 189:
 </code> </code>
  
 +===== Lizenzen =====
 +Die augenblicklich ausgecheckten Lizenzen lassen sich durch den Befehl
 +<code matlab>
 +license('inuse')
 +</code>
 +anzeigen.
 +
 +===== Maximum einer Matrix =====
 +Der Maximalwert einer Matrix lässt sich am einfachsten mit <code matlab>
 +max(a(:))</code> finden.
 +
 +===== Aktuelles Datum anzeigen =====
 +Das aktuelle Datum mit Uhrzeit lässt sich am einfachsten mit
 +<code matlab>
 +datestr(now);
 +</code>
 +anzeigen lassen.
 +
 +===== Zuweisen von Defaultwerten in Properties von Klassen =====
 +Defaultwerte für Properties von Klassen (=Membervariablen) lassen sich entweder in den Properties direkt setzen oder beim Aufruf des Konstruktors.
 +
 +Beispiel mit Zuweisung direkt in den Properties:
 +<code matlab>
 +classdef MyClass
 +   properties
 +      PropertyOne = 42;
 +      PropertyTwo = MyClass2();
 +   end
 +end
 +</code>
 +Dabei wird die rechte Seite nur beim ersten Instanzieren der Klasse MyClass ausgewertet. Der Konstruktor von MyClass2 wird deshalb nur //einmal// ausgeführt. PropertyTwo enthält daher immer das gleiche Objekt, siehe
 +[[https://de.mathworks.com/help/matlab/matlab_oop/specifying-properties.html#brqy3km-10|Defining Default Values]]
 +
 +Beispiel mit Zuweisung beim Aufruf des Konstruktors:
 +<code matlab>
 +classdef MyClass
 +   properties
 +      PropertyOne
 +      PropertyTwo; 
 +   end
 +   methods
 +      function obj = MyClass()
 +         obj.PropertyOne = 42;
 +         obj.PropertyTwo = MyClass2();
 +      end
 +   end
 +end
 +</code>
 +Auf diese Art wird bei jeder Instanzierung von MyClass eine Auswertung der rechten Seiten vorgenommen. Der Konstruktor von MyClass2 wird daher //mehrmals// ausgeführt, siehe 
 +[[https://de.mathworks.com/help/matlab/matlab_oop/initialize-property-values.html#brqy3km-11|Set Property Values in the Constructor]]
 +
 +===== MATLAB-Skript von der Kommandozeile starten =====
 +Um ein MATLAB-Skript ohne grafische Ausgabe zu starten, kann folgender Befehl verwendet werden: 
 +<code bash>
 +matlab -nosplash -nodisplay -nodesktop -r scriptToStart
 +</code>
 +===== Links =====
 +  * [[http://www.mathworks.de/products/matlab/|Matlab Homepage]]
 +  * [[http://undocumentedmatlab.com/|Sammlung von undokumentierten Matlab-Funktionen]]
 +  * [[http://ubcmatlabguide.github.io/|Yet another guide to Matlab, u.a. mit Tipps zur Beschleunigung]]
 +  * [[https://github.com/tminka/lightspeed|Lightspeed Bibliothek von Tom Minka]]
 +  * [[http://en.wikibooks.org/wiki/MATLAB_Programming/Struct_Arrays|Hinweise zu Structs]]
 +  * [[http://en.wikibooks.org/wiki/MATLAB_Programming/Error_Messages|Häufige MATLAB-Fehlermeldungen und ihre Ursachen]]
 +  * [[http://stackoverflow.com/a/1745686|Matlab OOP Performance (mit Benchmark Code)]]
 +  * [[http://www.henning-thielemann.de/ScriptingHater.html|Scriptsprachen-Hassen leichtgemacht]] (insbesondere MATLAB)
 +  * [[https://abandonmatlab.wordpress.com/|Abandon MATLAB]]
matlab.txt · Zuletzt geändert: 2024/04/01 07:47 von olli