# Matlab graphics with LaTeX

Much of the time you'll be able to use graphics from matlab in LaTeX documents just as you use graphics from elsewhere - use the graphicx package. Sometimes however you might want to have sophisticated LaTeX in your matlab graphics, or you may not want the text in the graphics to scale when you scale the figure. Several solutions have emerged to deal with these situations. The use of pdflatex complicates matters, and some solutions require several non-standard packages to be installed. This page describes the possibilities

## psfrag

The psfrag package is part of most LaTeX installations. If you have an EPS (encapsulated postscript) file with some displayed text, the package lets you replace the text with a latex fragment. Suppose for example that you wanted the result of latex's $\sqrt{x}$ to appear in a matlab figure. All you need to do is put some text (test, say) where you want the maths to be on the figure, export the figure as EPS (fig1.eps in this example), then in your document have

   \begin{figure}[htbp]
\psfrag{test}{$\sqrt{x}$}
\includegraphics{fig1.eps}
\end{figure}


Note that this doesn't work with PDF files, but you can still use this method with pdflatex if you have the pst-pdf package installed. With a file (called foo.tex, say) containing

  \documentclass{article}
\usepackage{psfrag,pst-pdf,graphicx}

\begin{document}
\begin{figure}[htbp]
\psfrag{test}{$\sqrt{x}$}
\includegraphics{fig1.eps}
\end{figure}

and

\begin{figure}[htbp]
\includegraphics{fig2.pdf}
\end{figure}

\end{document}


you can create a PDF file by running

  pdflatex foo.tex
latex foo.tex
dvips -o foo-pics.ps foo.dvi
ps2pdf foo-pics.ps
pdflatex foo.tex


## matlabfrag

matlabfrag (from matlab central) has been developed from the also popular laprint program. According to its own documentation

• It has much more emphasis on WYSIWYG.
• It handles figures that need the OpenGL or Z-Buffer renderers.
• Text objects are sized correctly (such as with a legend).
• Tick labels are handled better.

when compared to laprint so although it's not so easy to install I'll describe its use here with the latex support it prefers - pstool. First download the matlabfrag.m file and the extensive documentation. Then there are some latex files to download. I think they're all part of the oberdiek bundle (30M), but I've made the ones I needed available for download (March 2010). If you have trouble with these you can use the pst-pdf package as shown in the earlier example.

Inside matlab you produce your figure in the usual way then run matlabfrag, giving it at least a file name - e.g.

  >> plot(1:10) ; title('help')
>> matlabfrag('fragtest')


Then you create a LaTeX file like this (called foo.tex, say)

   \documentclass{article}
\usepackage{pstool}
\begin{document}
\psfragfig{fragtest}
\end{document}


and then run

   pdflatex -shell-escape foo.tex


You should end up with a foo.pdf. Once that works you can start exploiting the extra features that matlabfrag.m offers - see its documentation for details.

• © Cambridge University, Engineering Department, Trumpington Street, Cambridge CB2 1PZ, UK (map)
Tel: +44 1223 332600, Fax: +44 1223 332662
Contact: helpdesk