summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/numericplots/MatlabSupport.tex
blob: 32802955b885e2f85983fbfb4e972f050fefae06 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
\subsection{export2latex.m}

The function \texttt{export2latex(data, filename, [options])} may be used to
export data from Matlab to be used with NumericPlots.sty. The function takes the two parameters
data and filename, where filename is the name of the file where the data should
be stored with full path but without extension. Data is a structure with the
three entries x, y, and ident, where x are the x-data, y the y-data and ident is
an identifier to have access to the data in Latex. To access the data in Latex
the command \verb+\Data<ident>+ is used.

The parameter data may be provided as an 1xK array if each entry of the array is
a structure with the entries x, y and ident. There may be an additional entry
descr.
\begin{itemize}
  \item data(1,i).x = $X_i$
  \item data(1,i).y = $Y_i$
  \item data(1,i).ident = Identifier
  \item (data(1,i).descr = Description)
\end{itemize}
Identifier must be a valid Latex command name, which basically means it must be
a string without numbers.

For every entry of data, $X$ and $Y$ must be arrays of the same size
$M\text{x}N$. If $M>1$, each column of the array is exported to the file and the
identifier is expanded by the roman representation of the column number.

It might be useful to do a \texttt{interp1} before exporting the data to get
smaller files and to use less of \TeX's memory. ($\rightarrow$ script
Patrick?!?)

The optional parameter \texttt{options} might be used to control which
additional information is provided in the output file.
\begin{itemize}
  \item \texttt{options.DataBoundaries} [true] If set to true, the output file
  contains the commands \verb+\DataXmin+, \verb+\DataXmax+, \verb+\DataYmin+ and
  \verb+\DataYmax+ which may be used to define the axis.
  \item \texttt{options.AxisBoundaries} [false] If set to true, the output file
  contains the commands \verb+\DataXminAxis+, \verb+\DataXmaxAxis+,
  \verb+\DataYminAxis+ and \verb+\DataYmaxAxis+ which may be used to define the
  axis. In contrary to the DataBoundaries the AxisBoundaries add an additional
  gap of \texttt{options.AxisBoundariesGap} [10] percent of the full scale to
  the data boundaries such that the plot doesn't touch the axis.
\end{itemize}

\subsection{struct2latex.m}
The function \texttt{struct2latex(data,[xname],[downsample],[filename],[postfix],[options])} may be used to export a Matlab struct to be used with NumericPlots.sty. The function is based on export2latex and the \verb+options+ argument is given to export2latex. The optional argument \verb+xname+ specifies the fieldname of the x-data. If no \verb+xname+ is given, you have to chose one via popup. All other fields are treated like y-data. Furthermore, the identifier of the y-data are equal to the fieldnames and have to be valid Latex commands (fieldnames with numbers are not supported). The struct2latex command only supports 1 dimensional arrays (row vectors). Column vectors are mapped for propper export without warning. With the optional argument \verb+downsample+ (integer>0) it is possible to downsample the data for smaller files. A warning is given when data points exceed $5000$. Usually $1000$ data points are enough for a propper plot in latex. The optional argument \verb+filename+ specifies the outputname with path of the texfile. If no filename is given, it has to be chosen via popup. The optional argument \verb+postfix+ can be used to put a postfix after the fieldname in the identifier of the y-data. The \verb+options+ argument is also optional and equal to the options argument of the function export2latex.

Matlab example.
\begin{verbatim}
    % data for struct2latex should be row-vectors. anyway, column-vectors are
    % mapped to row-vectors. matrices are not supported

    %% export row-vectors
    t = [1:0.1:10];

    data.time = t;
    data.sin = sin(t);
    data.cos = cos(t);
    data.exp = exp(t);
    data.tan = tan(t);

    %struct2latex(data,xname,downsample,filename,postfix,options)
    %downsample,filename,postfix,options are optional arguments
    struct2latex(data,'time',1,'texdataA','row');
\end{verbatim}

\subsection{dspace2struct}
The function \texttt{dspace2struct(dataname,version)} may be used to import \texttt{.mat} created by \textsc{dSpace} to \textsc{Matlab}. It returns a \textsc{Matlab} struct out of the provided variables \verb+dataname+ and \verb+version+. Thereby \verb+dataname+ is the name of the \textsc{dSpace} \verb+.mat+ file and the optional string argument \verb+version+ has to be equal \verb+version = 'NG'+ if \textsc{dSpace Control Desk Next Generation} is used. It is convenient to chose a unique signal name in \textsc{Matlab/Simulink} because they will be the same in \textsc{dSpace}. The function \texttt{dspace2struct(dataname,version)} just adopts the names provided by \textsc{dSpace} and use them as fieldnames. The time vector will always be called \verb+.time+.

Matlab example.
\begin{verbatim}
  dataOG = dspace2struct(measurements) %Old Control Desk
  dataNG = dspace2struct(measurements,'NG') %Control Desk Next Generation
\end{verbatim}

\subsection{dspace2latex}
The function \texttt{dspace2latex} is just a combination of \texttt{dspace2struct} and \texttt{struct2latex} with commonly used arguments. It is a simple and quick way to export measurements from \textsc{dSpace} to \LaTeX{} without any revision of the data.