Updates to macroprocessor slides

time-shift
Sébastien Villemot 2010-07-01 15:21:41 +02:00
parent ad28c2054d
commit e7d3b5acee
1 changed files with 64 additions and 10 deletions

View File

@ -17,8 +17,8 @@
\title{The Dynare Macro-processor} \title{The Dynare Macro-processor}
\author{Sébastien Villemot} \author{Sébastien Villemot}
\institute[BdF - CEPREMAP]{Banque de France - CEPREMAP} \institute{CEPREMAP}
\date{June 23, 2009} \date{June 29, 2010}
\AtBeginSection[] \AtBeginSection[]
{ {
@ -34,7 +34,6 @@
\titlepage \titlepage
\end{frame} \end{frame}
\begin{frame} \begin{frame}
\frametitle{Outline} \frametitle{Outline}
\tableofcontents \tableofcontents
@ -168,7 +167,8 @@
\item concatenation: \texttt{+} \item concatenation: \texttt{+}
\item difference \texttt{-}: returns the first operand from which the elements of the second operand have been removed \item difference \texttt{-}: returns the first operand from which the elements of the second operand have been removed
\item extraction of sub-arrays: \textit{e.g.} \texttt{v[4:6]} \item extraction of sub-arrays: \textit{e.g.} \texttt{v[4:6]}
\item testing membership of an array: \texttt{in} operator (only in unstable version of Dynare) \item testing membership of an array: \texttt{in} operator \\ (example:
\texttt{"b" in ["a", "b", "c"]} returns \texttt{1})
\end{itemize} \end{itemize}
\end{block} \end{block}
@ -321,7 +321,7 @@ end;
% \item Useful to understand how the macro-processor works % \item Useful to understand how the macro-processor works
\item Just add the \texttt{savemacro} option on the Dynare command line (after the name of your MOD file) \item Just add the \texttt{savemacro} option on the Dynare command line (after the name of your MOD file)
\item If MOD file is \texttt{filename.mod}, then the macro-expanded version will be saved in \texttt{filename-macroexp.mod} \item If MOD file is \texttt{filename.mod}, then the macro-expanded version will be saved in \texttt{filename-macroexp.mod}
\item With the unstable version of Dynare, you can specify the filename for the macro-expanded version with the syntax \texttt{savemacro=mymacroexp.mod} \item You can specify the filename for the macro-expanded version with the syntax \texttt{savemacro=mymacroexp.mod}
\end{itemize} \end{itemize}
\end{frame} \end{frame}
@ -497,9 +497,62 @@ end;
\end{itemize} \end{itemize}
\end{frame} \end{frame}
% \begin{frame} \begin{frame}[fragile=singleslide]
% \frametitle{MATLAB loops vs macro-processor loops} \frametitle{MATLAB loops vs macro-processor loops (1/3)}
% \end{frame} Suppose you have a model with a parameter $\rho$, and you want to make
simulations for three values: $\rho = 0.8, 0.9, 1$. There are
several ways of doing this:
\begin{block}{With a MATLAB loop}
\begin{verbatim}
rhos = [ 0.8, 0.9, 1];
for i = 1:length(rhos)
rho = rhos(i);
stoch_simul(order=1);
end
\end{verbatim}
\end{block}
\begin{itemize}
\item The loop is not unrolled
\item MATLAB manages the iterations
\item Interesting when there are a lot of iterations
\end{itemize}
\end{frame}
\begin{frame}[fragile=singleslide]
\frametitle{MATLAB loops vs macro-processor loops (2/3)}
\begin{block}{With a macro-processor loop (case 1)}
\begin{verbatim}
rhos = [ 0.8, 0.9, 1];
@#for i in 1:3
rho = rhos(@{i});
stoch_simul(order=1);
@#endfor
\end{verbatim}
\end{block}
\begin{itemize}
\item Very similar to previous example
\item Loop is unrolled
\item Dynare macro-processor manages the loop index but not the data array (\texttt{rhos})
\end{itemize}
\end{frame}
\begin{frame}[fragile=singleslide]
\frametitle{MATLAB loops vs macro-processor loops (3/3)}
\begin{block}{With a macro-processor loop (case 2)}
\begin{verbatim}
@#for rho_val in [ "0.8", "0.9", "1"]
rho = @{rho_val};
stoch_simul(order=1);
@#endfor
\end{verbatim}
\end{block}
\begin{itemize}
\item Advantage: shorter syntax, since list of values directly given in the loop construct
\item Note that values are given as character strings (the macro-processor does not
know floating point values)
\item Inconvenient: can not reuse an array stored in a MATLAB variable
\end{itemize}
\end{frame}
\section{Conclusion} \section{Conclusion}
@ -520,7 +573,7 @@ end;
\begin{itemize} \begin{itemize}
\item GNU Octave (or simply Octave) is a high-level language, primarily intended for numerical computations \item GNU Octave (or simply Octave) is a high-level language, primarily intended for numerical computations
\item Basically, it is a free clone of MATLAB: same syntax, almost same set of functions \item Basically, it is a free clone of MATLAB: same syntax, almost same set of functions
\item Runs on Windows, Linux and MacOS \item Runs on Windows, Linux and Mac OS X
\item Advantages: \item Advantages:
\begin{itemize} \begin{itemize}
\item free software, no license fee to pay \item free software, no license fee to pay
@ -530,7 +583,8 @@ end;
\item Inconvenients: \item Inconvenients:
\begin{itemize} \begin{itemize}
\item slower than MATLAB \item slower than MATLAB
\item less user friendly (no good graphical user interface) \item less user friendly (however note that there is a graphical user
interface to Octave called ``qtoctave'')
\end{itemize} \end{itemize}
\end{itemize} \end{itemize}
\end{frame} \end{frame}