Montag, 13. April 2009

CUDA, mingw und Code::Blocks

So um es mal festzuhalten:
man kann bisher mit CUDA unter Windows nur mit Hilfe des MSVC-Code erzeugen, was ich sehr schade finde. (Zumindest hab ich keinen nachvollziehbaren Weg gefunden mingw einzusetzen.)

Man kann aber trotzdem bspw. Code::Blocks verwenden, dazu sollte man sich an diesem Blog-Post orientieren. Allerdings muss man noch ein paar Anpassungen vornehmen, weil der Beitrag für eine Toolchain unter Linux ausgelegt ist. Die notwendigen Details poste ich hier, wenn es bei mir 100 % läuft (was es im Labor irgendwie schon tut, aber hier zuhause gerade noch nicht).

Ich werde es jetzt so machen, dass ich die Cuda-Funktionen in eine DLL packe, die ich mit MSVC erzeuge und den Rest dann mit mingw erzeuge und dann von dort auf die DLLs linke.

Microsoft Visual C++ (Express Edition) vs. C99

Jetzt bin ich schon zum zweiten mal auf das Problem gestoßen, dass der MSVC einfach mache Sachen des C99 Standards nicht unterstützt:
Heute war es die Funktion strtof, mit der kann man normalerweise einen String in einen Float wandeln. Zum Glück wird strtod (wandelt in double) unterstützt, so dass man mit nem Cast doch noch daran kommt.
Das erste Mal fiel es mir bei isfinite auf, das gibt's nämlich auch nicht.

Die Bibliotheken von mingw (und damit gcc) enthalten übrigens beides.

Freitag, 27. Februar 2009

Array Indizierung: Matlab vs. C

Hat man ein zweidimensionales Array (Matrix) in Matlab, so wird dieses, wenn man eine mex-Funktion schreiben will, Spalte für Spalte durchgearbeitet. In normalen C-Code jedoch wird ein solches Array zeilenweise durchgearbeitet. Ist ganz nützlich zu wissen wenn man sich wundert warum der gleiche Code des mex-Files als DLL komische Dinge tut.

Ein wirklich guter Thread dazu im Mathworks Newsreader.

Donnerstag, 26. Februar 2009

Matlab mit Latex, eine Liste.

Der Mathworks Fileexchange bietet ein Menge interessanter Dinge, ich hab mal ein paar Sachen für Matlab zusammen mit Latex rausgesucht. Das meiste hab ich nicht probiert, aber möchte ich für später mal festhalten:
  • M-code LaTeX Package: Damit kann man Matlab-Skripte für Latex aufbereiten, um diese in ein Latex-Dokument einzubinden.
  • Figure-Legenden in Latex: Thread im Newsreader in dem beschrieben wird, wie man die Plotlegenden auch mit dem integrierten Latex-Interpreter setzen kann.
  • PGF und Matfig2PGF: PGF ist ist Makro-Paket für Latex, mit dem man Grafiken erzeugen kann. Zusammen mit dem Matfig2PGF-Skript kann man Matlab-Figures in das Format exportieren, dabei wird dann alles (Beschriftunge, Ticks, etc.) in Latex gesetzt. Die Figures passen dann perfekt in das Dokument.
  • Matrix2Latex GUI: dieses Skript wandelt Matrizen in eine Latex-Tabelle.
  • TeX Editor: das is ein cooles Teil: man kann da Latex-Formeln eintippen und das GUI zeigt sie online von Latex interpretiert an. Ist wohl für Formeln innerhalb von Matlab gedacht, aber hey: das kann man auch gebrauchen wenn man Formeln so für Latex braucht.
  • SETAXES: nettes Skript das Figures mit Latex interpretierten xy-Ticks versieht und sogar Pfeilspitzen an die Achsen macht.
  • Format Tick Labels: im Prinzip gleiche Aufgabe wie SETAXES, war ein Pick of the Week von Mathworks.
  • figure to latex: Wandelt auch Figures in entsprechende Latex-Files um, auch hier werden die Beschriftungen etc. in Latex gesetzt.
  • latex_table: so ähnlich wie Matrix2Latex, etwas einfacher wohl.

Mit Matlab Formeln für Latex erzeugen.

Noch nicht selbst getestet, aber das klingt äußerst interessant:
Link zu Mathworks

Hier wird beschrieben wie man mit Latexsyms Formeln in Matlab erstellt und diese dann in die entsprechende Latex-Anweisungen wandelt. Aber einfach mal selber gucken.

Sonntag, 8. Februar 2009

Hilfe für Latex-Tabellen.

Wenn man keine Lust hat Latex-Tabellen von Hand oder mit eingebauten Editoren zu schreiben, sollte man sich an Calc2Latex wenden. Das ist ein nettes kleines Makro für Calc von Openoffice und wandelt Calc-Tabellen in Latex-Tabellen um. Die Installation ist hier beschrieben. Man kann dann sogar ansagen wie man die Tabelle so gestaltet haben möchte, Caption und Label natürlich auch.

Für Excel gibts das wohl auch, hier heißt es xls2tex. Hab ich mangels Excel nicht probieren können, aber die Seite beschreibt wie es geht.

Schnell bessere PDFs aus MATLAB erzeugen.

Das MATLAB-Skript "print_pdf" von Oliver Woodford, das auf dem MATLAB File Exchange Server zu finden ist, erzeugt relativ problemlos PDFs aus MATLAB-Figures. Dabei behebt es auch das nervige Problem mit gestrichelten Plots. Ausprobieren lohnt sich.

Man muss allerdings Ghostscript installiert haben. Das Skript funktioniert sofort mit englischsprachigen Windows-Systemen, auf meinem deutschen XP musste ich den Pfad zu Ghostscript etwas anpassen. Im Skript selber ist die Stelle aber mit einem Kommentar verknüpft, der auch beschreibt wie man den Pfad anzugeben hat.