Zeichnen von MATLAB-Diagrammen in Latex

Zeichnen von MATLAB-Diagrammen in Latex

Ich habe einige 2D- und 3D-Figuren in MATLAB. Unten sind zwei Beispiele derselben Art:

Bildbeschreibung hier eingeben

Und

Bildbeschreibung hier eingeben

Wie füge ich diese Abbildungen in LaTeX ein? Bis jetzt füge ich das exportierte PNG-Bild ein, aber das sieht nicht flüssig aus, wenn das Dokument vergrößert wird.

Antwort1

KasseMatlab2TikZ. Dabei wird TikZ verwendet, um die Abbildungen zur Kompilierungszeit zu generieren.

Auf der Matlab-Seite verwenden Sie Code wie diesen:

matlab2tikz( '/PATH/FILE.tikz','height','\figureheight','width','\figurewidth',...
'extraAxisOptions',{'tick label style={font=\footnotesize}'}, ...
'extraAxisOptions',{'y tick label style={/pgf/number format/.cd, fixed, fixed zerofill, precision=2, /tikz/.cd}'});

Und auf der LaTeX-Seite Code wie dieser:

\begin{figure}[htbp]
\centering
\setlength\figureheight{8cm}
\setlength\figurewidth{0.8\textwidth}
\input{PATH/FILE.tikz}
\caption{Caption Text.}
\label{fig:figureLabel}

\end{figure}

Hier ist ein Beispiel (ein loglogDiagramm mit Legende, Anmerkungen und einzelnen Symbolen).

Ein Loglog-Plot aus Matlab mit Legende und einzelnen Symbolen und Anmerkungen

Antwort2

Viele sind mit den matlab2tikzErgebnissen zufrieden, aber ich mag die Möglichkeit, in den Diagrammen meine eigenen Makros zu verwenden, sodass sich das gesamte Dokument inklusive der Diagramme automatisch aktualisiert, wenn sich meine Notation ändert. Auf diese Weise bin ich bei meiner Arbeit fast immer konsistent.

Schreiben der Plots per Hand mit nativenpgfplotserzeugt außerdem saubereren, leichter veränderbaren und kompakteren Code als die automatisch generierten Methoden. Es gibt eine gewisse Lernkurve, aber ich finde, dass sich die Investition in das Lernen lohnt.

Ich lasse MATLAB oder einen anderen rechenintensiven Code einfach Rohdateien ausgeben .datund pgfplotslese Daten daraus. Wenn ich meinen Code also erneut ausführe und dann mein Dokument neu kompiliere, werden die Ergebnisse automatisch aktualisiert.

Ich hatte Ihre Streudaten nicht, also habe ich für das erste Diagramm einige „Dummy-Daten“ mit Funktionen und Zufallszahlen erstellt. Ich habe jede Option kommentiert, damit Sie sehen können, woher jedes Element des Diagramms stammt. DiepgfplotsDokumentationgehört zu den Besten in der Branche und Sie können dort weitere Einzelheiten zu allen Optionen finden.

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.11}

\begin{document}
\begin{tikzpicture}
\begin{axis}[
  only marks,                    % no lines
  xmin=0, xmax=200,              % x-axis limits
  ymin=0, ymax=300,              % y-axis limits
  xlabel={Dissimilarities},      % x-axis label
  ylabel={Distances},            % y-axis label
  title={Morse Signal Analysis}, % plot title
  legend pos=north west,         % legend position on plot
  legend cell align=left,        % text alignment within legend
  domain=20:180,                 % domain for plotted functions (not needed for scatter data)
  samples=200,                   % plot 200 samples
]
  \addplot[mark=o,blue] {x^2/200 + rand*x/3}; % add the first plot
  \addlegendentry{Stress}; % add the first plot's legend entry
  \addplot[mark=+,red]  {x^2/200 + rand*x/2}; % ...
  \addlegendentry{Sammon Mapping};
  \addplot[mark=triangle,green] {x^2/200 + rand*x/1.5};
  \addlegendentry{Squared Stress};
\end{axis}
\end{tikzpicture}

\bigskip
\begin{tikzpicture}
\begin{axis}[
  grid=major,              % draw major gridlines
  major grid style=dotted, % dotted grid lines
  colormap/jet,            % colormap from MATLAB
  samples=30,              % 30 samples in each direction
  view={140}{30},          % configure plot view
  domain=-3:3,             % x varies from -3 to 3
  y domain=-3:3,           % y varies from -3 to 3
  zmin=-10, zmax=10,       % z-axis limits
  xlabel={$x$},            % x-axis label
  xtick={-3,-2,...,3},     % integer-spaced tick marks on the x-axis
  ylabel={$y$},            % y-axis label
  title={$y^2 - x^2$},     % plot title
]
  \addplot3[mesh] {y^2-x^2}; % make the mesh plot
\end{axis}
\end{tikzpicture}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen