Problem mit Grafik aus Matlab

Tabellen und Grafiken erstellen und anordnen


Erano1
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 29. Nov 2017, 09:52

Problem mit Grafik aus Matlab

Beitrag von Erano1 »

Hallo,

ich schreibe gerade meine Masterarbeit in der Regelungstechnik und möchte diese in Latex verfassen. Vom Fachgebiet gibt es dafür eine Arbeitsvorlage mit Beispielen von eigentlich allen was gebraucht wird. Unter anderem ein Beispiel wie Matlabfigures zu Latex exportiert werden können. Diese werden mithilfe von matlabfrag (https://de.mathworks.com/matlabcentral/ ... matlabfrag) in eine eps-Datei gespeichert und in Latex mit \psfragfig eingebunden.

Mit Matlab wird ein einfacher Plot der Sprungantwort eines PT1-Gliedes erzeugt und als eps gespeichert. Die Achsenbeschriftung in Latexcode geschrieben:

figure(1),clf
s=tf('s');
[Y,T]=step(1/(s+1));

plot(T,Y)
grid on
ylim([-0.1 1.1])

xlabel('$t$ (\unit{s})','interpreter','none')
ylabel('$y(t)$','interpreter','none')
l=legend('$PT_1$-Glied');
set(l,'location','southeast','interpreter','none')

matlabfrag('Dateiname')


Wird mit
 \begin{figure}[h]

  \begin{center}
       \psfragfig[width=0.8\textwidth]{./figs/ode}
       \caption{Sprungantwort eines $PT_1$-Gliedes.}
    \label{obscase1states}
   \end{center}
\end{figure}

das Figure in Latex eingebunden sollte es so aussehen wie in Screenshot 2.. So sieht es in der PDF welche in der Arbeitsvorlage mitgeschickt wurde auch aus, und da wurde zu der Zeit auch der Code einfach compiliert. Wird der selbe Code heute kompiliert sieht es aus wie auf Screenshot 1. Ich verwende TexStudio, habe es aber auch schon auf meinem Rechner (WIndows 10, MikTex) mit TexWork versucht -> selbe Problem. Anschließend habe ich noch auf dem Unirechner (Linux, TexMaker) versucht die Datei zu kompilieren, aber auch da wird die Grafik genauso falsch angezeigt.

Ich hoffe sehr, dass mir da jemand helfen kann, oder mir eine gute Alternative zum exportieren der Matlabfigures empfehlen kann.

Vielen Dank, viele Grüße,
Erano1
Dateianhänge
So soll es aussehen
So soll es aussehen
2.JPG (23.77 KiB) 2249 mal betrachtet
So sieht es aus
So sieht es aus
1.JPG (28.07 KiB) 2266 mal betrachtet

markusv
Forum-Meister
Forum-Meister
Beiträge: 947
Registriert: Do 3. Sep 2015, 17:20
Wohnort: Leipzig

Beitrag von markusv »

Hallo und willkommen hier im Forum.

Es wird denke ich für alle potentiellen Helfer/innen schwierig, ohne ein echtes Minimalbeispiel auzukommen.

Alternativ kannst du die Grafik auch einfach mit pgfplots und TikZ zeichnen. Hier hast du alle Einstellungen im Dokument und kannst sie selber festlegen:
\documentclass[]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=newest,grid style={dashed,black}}
\usepackage[locale=DE]{siunitx}
\begin{document}
\begin{figure}
    \centering
    \begin{tikzpicture}
   \begin{axis}[
   domain=0:6,
   width=12cm,
   height=6cm,
   grid,
   ymin=0,
   ymax=1.1,
   xmin=0,
   xmax=6,
   samples=100,
   ylabel = {$y(t)$},
   xlabel = {$t$ (\si{\s})},
   legend pos=south east
   ]
     \addplot[mark=none,blue] {1-e^(-x)};
     \addlegendentry{$PT_1$-Glied};
   \end{axis}
\end{tikzpicture}
    \caption{Sprungantwort eines $PT_1$-Gliedes}
    \label{fig:my_label}
\end{figure}
\end{document}
Wäre Microsoft Word für das Schreiben von Büchern entwickelt worden,
würde es Microsoft Book heißen.

Unkomplizierte und schnelle LaTeX-Hilfe, bspw. Erstellung von Vorlagen und Bewerbungen:
Help-LaTeX@web.de

Gast

Beitrag von Gast »

Eine andere Möglichkeit, ein in Matlab erstelltes Diagramm in Latex einzubinden, liefert matlab2tikz. Hier ist der Link dazu: https://github.com/matlab2tikz/matlab2tikz

Das Youtube-Video erklärt dir dabei, wie du vorzugehen hast: https://www.youtube.com/watch?v=dg7z3bs-eA8


Der Vorteil hierbei ist, dass du die abgespeicherte *.tikz-Datei später deinen Anforderungen entsprechend anpassen kannst, z. B. die Achsenbeschriftungen.

Erano1
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 29. Nov 2017, 09:52

Beitrag von Erano1 »

Hallo,

erst einmal vielen Dank für die Antworten.

markusv, wenn ich das richtig sehe muss ich bei dieser Alternative die Daten welche geplottet werden manuell vorgeben? Also in diesem Fall die Zeile mit 1-e^-t?

Die Sache mit den Tikz-Dateien funktioniert sehr gut, danke :)

Allerdings habe ich noch eine Frage zu den eps-Dateien. Anscheinend habe ich da ein generelles Problem. Auch wenn ich die Dateien nicht mit Matfrag sondern über den Matlab print Befehl erzeuge habe ich bloß im PDF einen weißen Block über der Abbildungsbezeichnung. Auch mit XnView kann ich die Dateien nicht öffnen. Es kommt immer die Fehlermeldung, dass er das AFPL Ghostscript nicht finden kann, auch wenn es installiert ist. Wird das ebenfalls benötigt, damit Latex mit den Dateien vernünftig funktioniert?

Viele Grüße,
Erano1

Gast

Beitrag von Gast »

Ein korrekt installiertes Ghostscript sollte man immer haben, wenn man mit EPS-Dateien arbeitet. Zur korrekten Installation gehört auch, dass gs bzw. gswin64c.exe oder gswin64.exe (oder entsprechend mit 32 statt 64 für 32-Bit-Windows) via PATH gefunden wird, also das Binary-Verzeichnis korrekt in PATH eingetragen ist. Das lässt sich leicht testen, indem man in einer Shell zuerst nach C:\(/t] wechselt und dann gswin64c --version aufruft. Wenn das funktioniert, ist PATH korrekt gesetzt.

BTW: Bei Verwendung von pdflatex, lualatex oder xelatex würde ich einfach direkt PDF-Dateien exportieren und einbinden statt über EPS zu gehen. (E)PS muss immer in PDF umgewandelt werden, wofür eigentlich immer GhostScript zum Einsatz kommt.

Erano1
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 29. Nov 2017, 09:52

Beitrag von Erano1 »

Ich probiere es gerade jeden Tag immer mal wieder, aber es will einfach noch nicht funktionieren. Hab den Pfad zu Path hinzugefügt und mit GSView kann ich mir auch eps Dateien, welche ich mit Matlab erzeuge ansehen. Nach vielen googlen finde ich oft nur Foreneinträge oder Installationsanleitung die mindestens 5 Jahre alt sind. Ist es nötig, MIKTEX oder TexStudio noch irgendwas mitzuteilen, damit Ghostscript in Laex verwendet werden kann?

Erano1
Forum-Newbie
Forum-Newbie
Beiträge: 4
Registriert: Mi 29. Nov 2017, 09:52

Beitrag von Erano1 »

Hallo,

mittlerweile kann ich schon mal sagen, dass der Fehler nicht bei Latex oder Ghostscript liegt. Wenn ich die eps-Dateien mit einem anderen Rechner erzeuge funktioniert alles wunderbar, also müssen die Dateien schon einen weg haben. Wenn ich es mit dem print-Befehl auf meinem Rechner mache und mir die Datei mit GSView ansehe, ist das Figure immer ganz unten, wird diese Datei dann eingebunden sieht man nur weiß. Und bei dem Weg über matlabfrag wie oben schon beschrieben die fehlerhafte Anzeige. Hatte jemand schon mal ein ähnliches Problem mit Matlab?

Antworten