Merge branch 'master' of whale.am28.uni-tuebingen.de:scientificComputing
This commit is contained in:
commit
0185e84735
@ -1,7 +1,10 @@
|
|||||||
\chapter{Debugging}
|
\chapter{Debugging}
|
||||||
|
|
||||||
When we write a program from scratch we almost always make
|
\centerline{\includegraphics[width=0.7\textwidth]{xkcd_debugger}\rotatebox{90}{\footnotesize\url{www.xkcd.com}}}\vspace{4ex}
|
||||||
mistakes. Accordingly a quite substantial amount of time is invested
|
|
||||||
|
|
||||||
|
When writing a program from scratch we almost always make
|
||||||
|
mistakes. Accordingly, a quite substantial amount of time is invested
|
||||||
into finding and fixing errors. This process is called
|
into finding and fixing errors. This process is called
|
||||||
\codeterm{debugging}. Don't be frustrated that a self-written program
|
\codeterm{debugging}. Don't be frustrated that a self-written program
|
||||||
does not work as intended and produces errors. It is quite exceptional
|
does not work as intended and produces errors. It is quite exceptional
|
||||||
@ -14,9 +17,40 @@ some hints that help to minimize errors.
|
|||||||
|
|
||||||
\section{Types of errors and error messages}
|
\section{Types of errors and error messages}
|
||||||
|
|
||||||
There are a number of different classes of programming errors.
|
There are a number of different classes of programming errors and it
|
||||||
|
is good to know the common ones. When we make a programming error
|
||||||
|
there are some that will lead to corrupted syntax, or invalid
|
||||||
|
operations and \matlab{} will \codeterm{throw} an error. Throwing an
|
||||||
|
error ends the execution of a program and there will be an error
|
||||||
|
messages shown in the command window. With such messages \matlab{}
|
||||||
|
tries to explain what went wrong and provide a hint on the possible
|
||||||
|
cause.
|
||||||
|
|
||||||
|
Bugs that lead to the termination of the execution may be annoying but
|
||||||
|
are generally easier to find and fix than logical errors that stay
|
||||||
|
hidden and the results of, e.g. an analysis, are seemingly correct.
|
||||||
|
|
||||||
|
\begin{important}[Try --- catch]
|
||||||
|
There are ways to \codeterm{catch} errors during \codeterm{runtime}
|
||||||
|
(i.e. when the program is executed) and handle them in the program.
|
||||||
|
|
||||||
|
\begin{lstlisting}[label=trycatch, caption={Try catch clause}]
|
||||||
|
try
|
||||||
|
y = function_that_throws_an_error(x);
|
||||||
|
catch
|
||||||
|
y = 0;
|
||||||
|
end
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
This way of solving errors may seem rather convenient but is
|
||||||
|
risky. Having a function throwing an error and catching it in the
|
||||||
|
\codeterm{catch} clause will keep your command line clean but may
|
||||||
|
obscure logical errors! Take care when using the \codeterm{try-catch
|
||||||
|
clause}.
|
||||||
|
\end{important}
|
||||||
|
|
||||||
|
|
||||||
\paragraph{\codeterm{Syntax error}:}
|
\subsection{\codeterm{Syntax error}}
|
||||||
The most common and easiest to fix type of error. A syntax error
|
The most common and easiest to fix type of error. A syntax error
|
||||||
violates the rules (spelling and grammar) of the programming
|
violates the rules (spelling and grammar) of the programming
|
||||||
language. For example every opening parenthesis must be matched by a
|
language. For example every opening parenthesis must be matched by a
|
||||||
@ -33,21 +67,89 @@ Did you mean:
|
|||||||
>> mean(random_numbers)
|
>> mean(random_numbers)
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\subsection{\codeterm{Indexing error}}
|
||||||
|
Second on the list of common errors are the indexing errors. Usually
|
||||||
|
\matlab{} gives rather precise infromation about the cause, once you
|
||||||
|
know what they mean. Consider the following code.
|
||||||
|
|
||||||
|
\begin{lstlisting}[label=indexerror, caption={Indexing errors.}]
|
||||||
|
>> my_array = (1:100);
|
||||||
|
>> % first try: index 0
|
||||||
|
>> my_array(0)
|
||||||
|
Subscript indices must either be real positive integers or logicals.
|
||||||
|
|
||||||
|
>> % second try: negative index
|
||||||
|
>> my_array(-1)
|
||||||
|
Subscript indices must either be real positive integers or logicals.
|
||||||
|
|
||||||
|
>> % third try: a floating point number
|
||||||
|
>> my_array(5.7)
|
||||||
|
Subscript indices must either be real positive integers or logicals.
|
||||||
|
|
||||||
|
>> % fourth try: a character
|
||||||
|
>> my_array('z')
|
||||||
|
Index exceeds matrix dimensions.
|
||||||
|
|
||||||
|
>> % fifth try: another character
|
||||||
|
>> my_array('A')
|
||||||
|
ans =
|
||||||
|
65 % wtf ?!?
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
The first two indexing attempts in listing \ref{indexerror_listing}
|
||||||
|
are rather clear. We are trying to access elements with indices that
|
||||||
|
are invalid. Remember, indices in \matlab{} start with 1. Negative
|
||||||
|
numbers and zero are not permitted. In the third attemp we index
|
||||||
|
using a floating point number. This fails because indices have to be
|
||||||
|
'integer' values. Using a character as an index (fourth attempt)
|
||||||
|
leads to a different error message that says that the index exceeds
|
||||||
|
the matrix dimensions. This indicates that we are trying to read data
|
||||||
|
behind the length of our variable \codevar{my\_array} which has 100
|
||||||
|
elements.
|
||||||
|
One could have expected that the character is an invalid index, but
|
||||||
|
apparently it is valid but simply too large. The fith attempt
|
||||||
|
finally succeeds. But why? \matlab{} implicitely converts the
|
||||||
|
\codeterm{char} to a number and uses this number to address the
|
||||||
|
element in \varcode{my\_array}.
|
||||||
|
|
||||||
|
\subsection{\codeterm{Assignment error}}
|
||||||
|
This error occurs when we want to write data into a vector.
|
||||||
|
|
||||||
\Paragraph{\codeterm{Indexing error}:}
|
|
||||||
\paragraph{\codeterm{Assignment error}:}
|
|
||||||
\paragraph{Name error:}
|
\paragraph{Name error:}
|
||||||
\paragraph{Arithmetic error:}
|
\paragraph{Arithmetic error:}
|
||||||
\paragraph{Logical error:}
|
|
||||||
|
|
||||||
|
|
||||||
\section{Avoiding errors}
|
\section{Logical error}
|
||||||
|
Sometimes a program runs smoothly and terminates without any
|
||||||
|
error. This, however, does not necessarily mean that the program is
|
||||||
|
correct. We may have made a \codeterm{logical error}. Logical errors
|
||||||
|
are hard to find, \matlab{} has no chance to find this error and can
|
||||||
|
not help us fixing bugs origination from these. We are on our own but
|
||||||
|
there are a few strategies that should help us.
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Be sceptical: especially when a program executes without any
|
||||||
|
complaint on the first try.
|
||||||
|
\item Clean code: Structure your code that you can easily read
|
||||||
|
it. Comment, but only where necessary. Correctly indent your
|
||||||
|
code. Use descriptive variable and function names.
|
||||||
|
\item Keep it simple (below).
|
||||||
|
\item Read error messages, try to understand what \matlab{} wants to
|
||||||
|
tell.
|
||||||
|
\item Use scripts and functions and call them from the command
|
||||||
|
line. \matlab{} can then provide you with more information. It will
|
||||||
|
then point to the line where the error happens.
|
||||||
|
\item If you still find yourself in trouble: Apply debugging
|
||||||
|
strategies to find and fix bugs (below).
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
|
||||||
|
\subsection{Avoiding errors}
|
||||||
It would be great if we could just sit down write a program, run it
|
It would be great if we could just sit down write a program, run it
|
||||||
and be done. Most likely this will not happen. Rather, we will make
|
and be done. Most likely this will not happen. Rather, we will make
|
||||||
mistakes and have to bebug the code. There are a few guidelines that
|
mistakes and have to bebug the code. There are a few guidelines that
|
||||||
help to reduce the number of errors.
|
help to reduce the number of errors.
|
||||||
|
|
||||||
\subsection{Keep it small and simple}
|
\subsection{The Kiss principle: 'Keep it small and simple' or 'simple and stupid'}
|
||||||
|
|
||||||
\shortquote{Debugging time increases as a square of the program's
|
\shortquote{Debugging time increases as a square of the program's
|
||||||
size.}{Chris Wenham}
|
size.}{Chris Wenham}
|
||||||
@ -67,15 +169,15 @@ the script is just hard.
|
|||||||
when you write it, how will you ever debug it?}{Brian Kernighan}
|
when you write it, how will you ever debug it?}{Brian Kernighan}
|
||||||
|
|
||||||
Many tasks within an analysis can be squashed into a single line of
|
Many tasks within an analysis can be squashed into a single line of
|
||||||
code. This saves some space in the file, reduces the effort of coming up
|
code. This saves some space in the file, reduces the effort of coming
|
||||||
with variable names and simply looks so much more competent than a
|
up with variable names and simply looks so much more competent than a
|
||||||
collection of very simple lines. Consider the following listing
|
collection of very simple lines. Consider the following listing
|
||||||
(listing~\ref{easyvscomplicated}). Both parts of the listing solve the
|
(listing~\ref{easyvscomplicated}). Both parts of the listing solve the
|
||||||
same problem but the second one breaks the task down to a sequence of
|
same problem but the second one breaks the task down to a sequence of
|
||||||
easy-to-understand commands. Finding logical and also syntactic errors is
|
easy-to-understand commands. Finding logical and also syntactic errors
|
||||||
much easier in the second case. The first version is perfectly fine
|
is much easier in the second case. The first version is perfectly fine
|
||||||
but it requires a deep understanding of the applied
|
but it requires a deep understanding of the applied functions and also
|
||||||
functions and also the task at hand.
|
the task at hand.
|
||||||
|
|
||||||
\begin{lstlisting}[label=easyvscomplicated, caption={Converting a series of spike times into the firing rate as a function of time. Many tasks can be solved with a single line of code. But is this readable?}]
|
\begin{lstlisting}[label=easyvscomplicated, caption={Converting a series of spike times into the firing rate as a function of time. Many tasks can be solved with a single line of code. But is this readable?}]
|
||||||
% the one-liner
|
% the one-liner
|
||||||
@ -88,13 +190,13 @@ rate(spike_indices) = 1;
|
|||||||
rate = conv(rate, kernel, 'same');
|
rate = conv(rate, kernel, 'same');
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
The preferred way depends on several considerations. (i)
|
The preferred way depends on several considerations. (i) How deep is
|
||||||
How deep is your personal understanding of the programming language?
|
your personal understanding of the programming language? (ii) What
|
||||||
(ii) What about the programming skills of your target audience or
|
about the programming skills of your target audience or other people
|
||||||
other people that may depend on your code? (iii) Is one solution
|
that may depend on your code? (iii) Is one solution faster or uses
|
||||||
faster or uses less resources than the other? (iv) How much do you
|
less resources than the other? (iv) How much do you have to invest
|
||||||
have to invest into the development of the most elegant solution
|
into the development of the most elegant solution relative to its
|
||||||
relative to its importance in the project? The decision is up to you.
|
importance in the project? The decision is up to you.
|
||||||
|
|
||||||
\subsection{Read error messages carefully and call programs from the command line.}
|
\subsection{Read error messages carefully and call programs from the command line.}
|
||||||
|
|
||||||
|
@ -2,12 +2,12 @@
|
|||||||
%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\title{\textbf{\huge\sffamily\tr{Introduction to\\[1ex] Scientific Computing}{Einf\"uhrung in die\\[1ex] wissenschaftliche Datenverarbeitung}}}
|
\title{\textbf{\huge\sffamily\tr{Introduction to\\[1ex] Scientific Computing}{Einf\"uhrung in die\\[1ex] wissenschaftliche Datenverarbeitung}}}
|
||||||
\author{{\LARGE Jan Grewe \& Jan Benda}\\[5ex]Abteilung Neuroethologie\\[2ex]\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}\vspace{3ex}}
|
\author{{\LARGE Jan Grewe \& Jan Benda}\\[5ex]Abteilung Neuroethologie\\[2ex]\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}\vspace{3ex}}
|
||||||
\date{WS 15/16\\\vfill \centerline{\includegraphics[width=0.7\textwidth]{announcements/correlationcartoon}\rotatebox{90}{\footnotesize\url{www.xkcd.com}}}}
|
\date{WS 2017/2018\\\vfill \centerline{\includegraphics[width=0.7\textwidth]{announcements/correlationcartoon}\rotatebox{90}{\footnotesize\url{www.xkcd.com}}}}
|
||||||
|
|
||||||
%%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
% \newcommand{\tr}[2]{#1} % en
|
% \newcommand{\tr}[2]{#1} % en
|
||||||
% \usepackage[english]{babel}
|
% \usepackage[english]{babel}
|
||||||
\newcommand{\tr}[2]{#2} % de
|
\newcommand{\tr}[2]{#1} % en
|
||||||
\usepackage[ngerman, english]{babel}
|
\usepackage[ngerman, english]{babel}
|
||||||
|
|
||||||
%%%% encoding %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%% encoding %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
@ -19,12 +19,15 @@
|
|||||||
\section{TODO}
|
\section{TODO}
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Beispiele schlechter plots sollten mehr Bezug zu den Typen von
|
\item Beispiele schlechter plots sollten mehr Bezug zu den Typen von
|
||||||
plots haben, die wir machen!
|
plots haben, die wir machen! Check WS1617 presentations for examples.
|
||||||
\item subplot
|
\item subplot
|
||||||
\item Uebersicht zu wichtigen plot Befehlen (plot, scatter, bar, step, ...)
|
\item Uebersicht zu wichtigen plot Befehlen (plot, scatter, bar, step, ...)
|
||||||
\item Funktionenplotten (siehe auch Design patterns) und untersampleter Sinus
|
\item Funktionenplotten (siehe auch Design patterns) und untersampleter Sinus
|
||||||
\item Verschiedene Stile fuer Achsenbeschriftung (gross/kleinschreibungen, Kalmmertyp fuer Einheiten), stay with one style!
|
\item Verschiedene Stile fuer Achsenbeschriftung (gross/kleinschreibungen, Klammertyp fuer Einheiten), stay with one style!
|
||||||
\item Stay with a coherent style (font type/style/size, colors schemes, line styles/thickness, point styles)
|
\item Stay with a coherent style (font type/style/size, colors schemes, line styles/thickness, point styles), same line style in all plots for the same quantity. How to do consistent line styles in matlab (python: dictionary for kwargs)?
|
||||||
|
\item Different plots for journal papers and presentations!
|
||||||
|
\item Color universal design for color blind people:
|
||||||
|
\url{http://jfly.iam.u-tokyo.ac.jp/color/}
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -20,6 +20,11 @@
|
|||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item Add spikeraster function
|
\item Add spikeraster function
|
||||||
\item Multitrial firing rates
|
\item Multitrial firing rates
|
||||||
|
\item Choice of bin width for PSTH, kernel width, also in relation sto
|
||||||
|
stimulus time scale
|
||||||
|
\item Kernle firing rate: discuss different kernel shapes, in
|
||||||
|
particular causal kernels (gamma, exponential), relation to synaptic
|
||||||
|
potentials
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\end{document}
|
\end{document}
|
||||||
|
@ -113,7 +113,7 @@ heisen die Intervalle auch \determ{Interspikeintervalle}
|
|||||||
\frac{\sigma_{ISI}^2}{2\mu_{ISI}^3}$.
|
\frac{\sigma_{ISI}^2}{2\mu_{ISI}^3}$.
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
|
|
||||||
\begin{exercise}{isiHist.m}{}
|
\begin{exercise}{isihist.m}{}
|
||||||
Schreibe eine Funktion \code{isiHist()}, die einen Vektor mit Interspikeintervallen
|
Schreibe eine Funktion \code{isiHist()}, die einen Vektor mit Interspikeintervallen
|
||||||
entgegennimmt und daraus ein normiertes Histogramm der Interspikeintervalle
|
entgegennimmt und daraus ein normiertes Histogramm der Interspikeintervalle
|
||||||
berechnet.
|
berechnet.
|
||||||
|
@ -1,95 +0,0 @@
|
|||||||
% GNUPLOT: LaTeX picture with Postscript
|
|
||||||
\begingroup
|
|
||||||
\makeatletter
|
|
||||||
\providecommand\color[2][]{%
|
|
||||||
\GenericError{(gnuplot) \space\space\space\@spaces}{%
|
|
||||||
Package color not loaded in conjunction with
|
|
||||||
terminal option `colourtext'%
|
|
||||||
}{See the gnuplot documentation for explanation.%
|
|
||||||
}{Either use 'blacktext' in gnuplot or load the package
|
|
||||||
color.sty in LaTeX.}%
|
|
||||||
\renewcommand\color[2][]{}%
|
|
||||||
}%
|
|
||||||
\providecommand\includegraphics[2][]{%
|
|
||||||
\GenericError{(gnuplot) \space\space\space\@spaces}{%
|
|
||||||
Package graphicx or graphics not loaded%
|
|
||||||
}{See the gnuplot documentation for explanation.%
|
|
||||||
}{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
|
|
||||||
\renewcommand\includegraphics[2][]{}%
|
|
||||||
}%
|
|
||||||
\providecommand\rotatebox[2]{#2}%
|
|
||||||
\@ifundefined{ifGPcolor}{%
|
|
||||||
\newif\ifGPcolor
|
|
||||||
\GPcolortrue
|
|
||||||
}{}%
|
|
||||||
\@ifundefined{ifGPblacktext}{%
|
|
||||||
\newif\ifGPblacktext
|
|
||||||
\GPblacktexttrue
|
|
||||||
}{}%
|
|
||||||
% define a \g@addto@macro without @ in the name:
|
|
||||||
\let\gplgaddtomacro\g@addto@macro
|
|
||||||
% define empty templates for all commands taking text:
|
|
||||||
\gdef\gplbacktext{}%
|
|
||||||
\gdef\gplfronttext{}%
|
|
||||||
\makeatother
|
|
||||||
\ifGPblacktext
|
|
||||||
% no textcolor at all
|
|
||||||
\def\colorrgb#1{}%
|
|
||||||
\def\colorgray#1{}%
|
|
||||||
\else
|
|
||||||
% gray or color?
|
|
||||||
\ifGPcolor
|
|
||||||
\def\colorrgb#1{\color[rgb]{#1}}%
|
|
||||||
\def\colorgray#1{\color[gray]{#1}}%
|
|
||||||
\expandafter\def\csname LTw\endcsname{\color{white}}%
|
|
||||||
\expandafter\def\csname LTb\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LTa\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
|
|
||||||
\expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
|
|
||||||
\expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
|
|
||||||
\expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
|
|
||||||
\expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
|
|
||||||
\expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
|
|
||||||
\expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
|
|
||||||
\expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
|
|
||||||
\expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
|
|
||||||
\else
|
|
||||||
% gray
|
|
||||||
\def\colorrgb#1{\color{black}}%
|
|
||||||
\def\colorgray#1{\color[gray]{#1}}%
|
|
||||||
\expandafter\def\csname LTw\endcsname{\color{white}}%
|
|
||||||
\expandafter\def\csname LTb\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LTa\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT0\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT1\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT2\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT3\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT4\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT5\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT6\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT7\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT8\endcsname{\color{black}}%
|
|
||||||
\fi
|
|
||||||
\fi
|
|
||||||
\setlength{\unitlength}{0.0500bp}%
|
|
||||||
\begin{picture}(6462.00,1700.00)%
|
|
||||||
\gplgaddtomacro\gplbacktext{%
|
|
||||||
\csname LTb\endcsname%
|
|
||||||
\put(6329,421){\makebox(0,0){\strut{}Time}}%
|
|
||||||
\put(910,270){\makebox(0,0){\strut{}$t_{1}$}}%
|
|
||||||
\put(1412,270){\makebox(0,0){\strut{}$t_{2}$}}%
|
|
||||||
\put(2123,270){\makebox(0,0){\strut{}$t_{3}$}}%
|
|
||||||
\put(2413,270){\makebox(0,0){\strut{}$t_{4}$}}%
|
|
||||||
\put(2717,270){\makebox(0,0){\strut{}$t_{5}$}}%
|
|
||||||
\put(3167,270){\makebox(0,0){\strut{}$t_{6}$}}%
|
|
||||||
\put(4033,270){\makebox(0,0){\strut{}$t_{7}$}}%
|
|
||||||
\put(4650,270){\makebox(0,0){\strut{}$t_{8}$}}%
|
|
||||||
\put(5685,270){\makebox(0,0){\strut{}$t_{9}$}}%
|
|
||||||
}%
|
|
||||||
\gplgaddtomacro\gplfronttext{%
|
|
||||||
}%
|
|
||||||
\gplbacktext
|
|
||||||
\put(0,0){\includegraphics{pointprocessscetchA}}%
|
|
||||||
\gplfronttext
|
|
||||||
\end{picture}%
|
|
||||||
\endgroup
|
|
@ -1,130 +0,0 @@
|
|||||||
% GNUPLOT: LaTeX picture with Postscript
|
|
||||||
\begingroup
|
|
||||||
\makeatletter
|
|
||||||
\providecommand\color[2][]{%
|
|
||||||
\GenericError{(gnuplot) \space\space\space\@spaces}{%
|
|
||||||
Package color not loaded in conjunction with
|
|
||||||
terminal option `colourtext'%
|
|
||||||
}{See the gnuplot documentation for explanation.%
|
|
||||||
}{Either use 'blacktext' in gnuplot or load the package
|
|
||||||
color.sty in LaTeX.}%
|
|
||||||
\renewcommand\color[2][]{}%
|
|
||||||
}%
|
|
||||||
\providecommand\includegraphics[2][]{%
|
|
||||||
\GenericError{(gnuplot) \space\space\space\@spaces}{%
|
|
||||||
Package graphicx or graphics not loaded%
|
|
||||||
}{See the gnuplot documentation for explanation.%
|
|
||||||
}{The gnuplot epslatex terminal needs graphicx.sty or graphics.sty.}%
|
|
||||||
\renewcommand\includegraphics[2][]{}%
|
|
||||||
}%
|
|
||||||
\providecommand\rotatebox[2]{#2}%
|
|
||||||
\@ifundefined{ifGPcolor}{%
|
|
||||||
\newif\ifGPcolor
|
|
||||||
\GPcolortrue
|
|
||||||
}{}%
|
|
||||||
\@ifundefined{ifGPblacktext}{%
|
|
||||||
\newif\ifGPblacktext
|
|
||||||
\GPblacktexttrue
|
|
||||||
}{}%
|
|
||||||
% define a \g@addto@macro without @ in the name:
|
|
||||||
\let\gplgaddtomacro\g@addto@macro
|
|
||||||
% define empty templates for all commands taking text:
|
|
||||||
\gdef\gplbacktext{}%
|
|
||||||
\gdef\gplfronttext{}%
|
|
||||||
\makeatother
|
|
||||||
\ifGPblacktext
|
|
||||||
% no textcolor at all
|
|
||||||
\def\colorrgb#1{}%
|
|
||||||
\def\colorgray#1{}%
|
|
||||||
\else
|
|
||||||
% gray or color?
|
|
||||||
\ifGPcolor
|
|
||||||
\def\colorrgb#1{\color[rgb]{#1}}%
|
|
||||||
\def\colorgray#1{\color[gray]{#1}}%
|
|
||||||
\expandafter\def\csname LTw\endcsname{\color{white}}%
|
|
||||||
\expandafter\def\csname LTb\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LTa\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT0\endcsname{\color[rgb]{1,0,0}}%
|
|
||||||
\expandafter\def\csname LT1\endcsname{\color[rgb]{0,1,0}}%
|
|
||||||
\expandafter\def\csname LT2\endcsname{\color[rgb]{0,0,1}}%
|
|
||||||
\expandafter\def\csname LT3\endcsname{\color[rgb]{1,0,1}}%
|
|
||||||
\expandafter\def\csname LT4\endcsname{\color[rgb]{0,1,1}}%
|
|
||||||
\expandafter\def\csname LT5\endcsname{\color[rgb]{1,1,0}}%
|
|
||||||
\expandafter\def\csname LT6\endcsname{\color[rgb]{0,0,0}}%
|
|
||||||
\expandafter\def\csname LT7\endcsname{\color[rgb]{1,0.3,0}}%
|
|
||||||
\expandafter\def\csname LT8\endcsname{\color[rgb]{0.5,0.5,0.5}}%
|
|
||||||
\else
|
|
||||||
% gray
|
|
||||||
\def\colorrgb#1{\color{black}}%
|
|
||||||
\def\colorgray#1{\color[gray]{#1}}%
|
|
||||||
\expandafter\def\csname LTw\endcsname{\color{white}}%
|
|
||||||
\expandafter\def\csname LTb\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LTa\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT0\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT1\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT2\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT3\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT4\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT5\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT6\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT7\endcsname{\color{black}}%
|
|
||||||
\expandafter\def\csname LT8\endcsname{\color{black}}%
|
|
||||||
\fi
|
|
||||||
\fi
|
|
||||||
\setlength{\unitlength}{0.0500bp}%
|
|
||||||
\begin{picture}(6462.00,3740.00)%
|
|
||||||
\gplgaddtomacro\gplbacktext{%
|
|
||||||
\csname LTb\endcsname%
|
|
||||||
\put(122,3587){\makebox(0,0)[l]{\strut{}\normalsize Event times $\{t_i\}$}}%
|
|
||||||
\put(6329,2947){\makebox(0,0){\strut{}Time}}%
|
|
||||||
\put(910,2865){\makebox(0,0){\strut{}$t_{1}$}}%
|
|
||||||
\put(1412,2865){\makebox(0,0){\strut{}$t_{2}$}}%
|
|
||||||
\put(2123,2865){\makebox(0,0){\strut{}$t_{3}$}}%
|
|
||||||
\put(2413,2865){\makebox(0,0){\strut{}$t_{4}$}}%
|
|
||||||
\put(2717,2865){\makebox(0,0){\strut{}$t_{5}$}}%
|
|
||||||
\put(3167,2865){\makebox(0,0){\strut{}$t_{6}$}}%
|
|
||||||
\put(4033,2865){\makebox(0,0){\strut{}$t_{7}$}}%
|
|
||||||
\put(4650,2865){\makebox(0,0){\strut{}$t_{8}$}}%
|
|
||||||
\put(5685,2865){\makebox(0,0){\strut{}$t_{9}$}}%
|
|
||||||
}%
|
|
||||||
\gplgaddtomacro\gplfronttext{%
|
|
||||||
}%
|
|
||||||
\gplgaddtomacro\gplbacktext{%
|
|
||||||
\csname LTb\endcsname%
|
|
||||||
\put(122,2465){\makebox(0,0)[l]{\strut{}\normalsize Intervals $\{T_i\}, \; T_i = t_{i+1} - t_i$}}%
|
|
||||||
\put(6329,1825){\makebox(0,0){\strut{}Time}}%
|
|
||||||
\put(1161,1770){\makebox(0,0){\strut{}$T_{1}$}}%
|
|
||||||
\put(1767,1770){\makebox(0,0){\strut{}$T_{2}$}}%
|
|
||||||
\put(2268,1770){\makebox(0,0){\strut{}$T_{3}$}}%
|
|
||||||
\put(2565,1770){\makebox(0,0){\strut{}$T_{4}$}}%
|
|
||||||
\put(2942,1770){\makebox(0,0){\strut{}$T_{5}$}}%
|
|
||||||
\put(3600,1770){\makebox(0,0){\strut{}$T_{6}$}}%
|
|
||||||
\put(4341,1770){\makebox(0,0){\strut{}$T_{7}$}}%
|
|
||||||
\put(5168,1770){\makebox(0,0){\strut{}$T_{8}$}}%
|
|
||||||
}%
|
|
||||||
\gplgaddtomacro\gplfronttext{%
|
|
||||||
}%
|
|
||||||
\gplgaddtomacro\gplbacktext{%
|
|
||||||
\colorrgb{0.00,0.00,0.00}%
|
|
||||||
\put(333,268){\makebox(0,0)[r]{\strut{}$0$}}%
|
|
||||||
\colorrgb{0.00,0.00,0.00}%
|
|
||||||
\put(333,460){\makebox(0,0)[r]{\strut{}$2$}}%
|
|
||||||
\colorrgb{0.00,0.00,0.00}%
|
|
||||||
\put(333,652){\makebox(0,0)[r]{\strut{}$4$}}%
|
|
||||||
\colorrgb{0.00,0.00,0.00}%
|
|
||||||
\put(333,844){\makebox(0,0)[r]{\strut{}$6$}}%
|
|
||||||
\colorrgb{0.00,0.00,0.00}%
|
|
||||||
\put(333,1036){\makebox(0,0)[r]{\strut{}$8$}}%
|
|
||||||
\colorrgb{0.00,0.00,0.00}%
|
|
||||||
\put(333,1228){\makebox(0,0)[r]{\strut{}$10$}}%
|
|
||||||
\csname LTb\endcsname%
|
|
||||||
\put(122,1487){\makebox(0,0)[l]{\strut{}\normalsize Event counts $\{ n_i \}$}}%
|
|
||||||
\put(6329,57){\makebox(0,0){\strut{}Time}}%
|
|
||||||
}%
|
|
||||||
\gplgaddtomacro\gplfronttext{%
|
|
||||||
}%
|
|
||||||
\gplbacktext
|
|
||||||
\put(0,0){\includegraphics{pointprocessscetchB}}%
|
|
||||||
\gplfronttext
|
|
||||||
\end{picture}%
|
|
||||||
\endgroup
|
|
108
programming/exercises/boolean_logical_indexing_de.tex
Normal file
108
programming/exercises/boolean_logical_indexing_de.tex
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||||
|
|
||||||
|
\usepackage[german]{babel}
|
||||||
|
\usepackage{natbib}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage[small]{caption}
|
||||||
|
\usepackage{sidecap}
|
||||||
|
\usepackage{pslatex}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{amssymb}
|
||||||
|
\setlength{\marginparwidth}{2cm}
|
||||||
|
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||||
|
|
||||||
|
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||||
|
\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung
|
||||||
|
3}}{{\bfseries\large Boolesche Ausdr\"ucke, logisches
|
||||||
|
Indizieren}}{{\bfseries\large 31. Oktober, 2016}}
|
||||||
|
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||||
|
jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}
|
||||||
|
|
||||||
|
\setlength{\baselineskip}{15pt}
|
||||||
|
\setlength{\parindent}{0.0cm}
|
||||||
|
\setlength{\parskip}{0.3cm}
|
||||||
|
\renewcommand{\baselinestretch}{1.15}
|
||||||
|
|
||||||
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\vspace*{-6.5ex}
|
||||||
|
\begin{center}
|
||||||
|
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
||||||
|
{\large Jan Grewe, Jan Benda}\\[-3ex]
|
||||||
|
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
|
||||||
|
Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
||||||
|
werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
|
||||||
|
im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
|
||||||
|
``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
|
||||||
|
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:\newline
|
||||||
|
``boolesche\_ausdruecke\_\{nachname\}.m'' benannt werden
|
||||||
|
(z.B. variablen\_datentypen\_mueller.m).
|
||||||
|
|
||||||
|
\section{Boolesche Ausdr\"ucke}
|
||||||
|
|
||||||
|
\begin{questions}
|
||||||
|
\question Gegeben sind zwei Vektoren \verb+x = [1 5 2 8 9 0 1]+ und
|
||||||
|
\verb+y = [5 2 2 6 0 0 2]+. F\"uhre aus und erkl\"are.
|
||||||
|
\begin{parts}
|
||||||
|
\part \verb+x > y+
|
||||||
|
\part \verb+y < x+
|
||||||
|
\part \verb+x == y+
|
||||||
|
\part \verb+x ~= y+
|
||||||
|
\part \verb+x & ~y+
|
||||||
|
\part \verb+x | y+
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Finde heraus, was die Funktionen \verb+bitand+ und \verb+bitor+ machen.
|
||||||
|
\begin{parts}
|
||||||
|
\part F\"uhre aus und erkl\"are: \verb+bitand(10, 8)+
|
||||||
|
\part F\"uhre aus und erkl\"are: \verb+bitor(10, 8)+
|
||||||
|
\end{parts}
|
||||||
|
\item Implementiere folgende Boolesche Ausdr\"ucke. Teste mit
|
||||||
|
zuf\"alligen ganzzahlingen Werten f\"ur \verb+x+ und \verb+y+.
|
||||||
|
\begin{parts}
|
||||||
|
\part Das Ergebnis sei wahr, wenn \verb+x+ gr\"o{\ss}er als \verb+y+ und die
|
||||||
|
Summe aus \verb+x+ und \verb+y+ nicht kleiner als 100 ist.
|
||||||
|
\part Das Ergebnis sei wahr, wenn \verb+x+ und \verb+y+ ungleich 0
|
||||||
|
oder \verb+x+ und \verb+y+ gleich sind.
|
||||||
|
\end{parts}
|
||||||
|
\end{questions}
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\section{Logische Indizierung}
|
||||||
|
|
||||||
|
Boolesche Ausdr\"ucke k\"onnen benutzt werden um aus Vektoren und
|
||||||
|
Matrizen die Elemente herauszusuchen, die einem bestimmeten Kriterium
|
||||||
|
entsprechen.
|
||||||
|
|
||||||
|
\begin{questions}
|
||||||
|
\question Gegeben sind \verb+x = (1:10)+ und
|
||||||
|
\verb+y = [3 1 5 6 8 2 9 4 7 0]+. Versuche die Ausgaben folgender
|
||||||
|
Anweisungen zu verstehen. Erkl\"are die Ergebnisse.
|
||||||
|
\begin{parts}
|
||||||
|
\part \verb+x < 5+
|
||||||
|
\part \verb+x( x < 5) )+
|
||||||
|
\part \verb+x( (y <= 2) )+
|
||||||
|
\part \verb+x( (x > 2) | (y < 8) )+
|
||||||
|
\part \verb+x( (x == 0) & (y == 0) )+
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Teste den Zufallsgenerator:
|
||||||
|
\begin{parts}
|
||||||
|
\part Erzeuge eine 100x100 2-D Matrize mit Zufallswerten zwischen
|
||||||
|
0 und 100 (\verb+randi+). Ersetze die Werte der Elemente, die in
|
||||||
|
folgende Klassen fallen: \verb+x < 33+ mit 0,
|
||||||
|
\verb+x >= 33 und x < 66+ mit 1 und alle \verb+x >= 66+ auf 2.
|
||||||
|
\part Ermittle die Anzahl Elemente f\"ur jede Klasse mithilfe eines
|
||||||
|
Booleschen Ausdrucks (\verb+sum+ kann eingesetzt werden um die
|
||||||
|
Anzahl Treffer zu ermitteln).
|
||||||
|
\end{parts}
|
||||||
|
\end{questions}
|
||||||
|
|
||||||
|
\end{document}
|
138
programming/exercises/control_flow_de.tex
Normal file
138
programming/exercises/control_flow_de.tex
Normal file
@ -0,0 +1,138 @@
|
|||||||
|
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||||
|
|
||||||
|
\usepackage[german]{babel}
|
||||||
|
\usepackage{natbib}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage[small]{caption}
|
||||||
|
\usepackage{sidecap}
|
||||||
|
\usepackage{pslatex}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{amssymb}
|
||||||
|
\setlength{\marginparwidth}{2cm}
|
||||||
|
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||||
|
|
||||||
|
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||||
|
\pagestyle{headandfoot}
|
||||||
|
\header{{\bfseries\large \"Ubung 4}}{{\bfseries\large Kontrollstrukturen}}{{\bfseries\large 08. November, 2016}}
|
||||||
|
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||||
|
jan.grewe@uni-tuebingen.de}
|
||||||
|
\runningfooter{}{\thepage}{}
|
||||||
|
|
||||||
|
\setlength{\baselineskip}{15pt}
|
||||||
|
\setlength{\parindent}{0.0cm}
|
||||||
|
\setlength{\parskip}{0.3cm}
|
||||||
|
\renewcommand{\baselinestretch}{1.15}
|
||||||
|
|
||||||
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\vspace*{-6.5ex}
|
||||||
|
\begin{center}
|
||||||
|
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
||||||
|
{\large Jan Grewe, Jan Benda}\\[-3ex]
|
||||||
|
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
|
||||||
|
Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
||||||
|
werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
|
||||||
|
im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
|
||||||
|
``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
|
||||||
|
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
|
||||||
|
``control\_flow\_\{nachname\}.m'' benannt werden
|
||||||
|
(z.B. control\_flow\_mueller.m).
|
||||||
|
|
||||||
|
\begin{questions}
|
||||||
|
\question Implementiere \code{for} Schleifen bei denen die Laufvariable:
|
||||||
|
\begin{parts}
|
||||||
|
\part ... von 0 bis 10 l\"auft. Gib den Wert der Laufvariable im
|
||||||
|
Schleifenk\"orper aus.
|
||||||
|
\part ... von 10 bis 0 l\"auft. Gib den Wert der Laufvariable aus.
|
||||||
|
\part ... von 0 bis 1 in einer Schrittweite von 0.1 l\"auft. Gib
|
||||||
|
die Laufvariable aus.
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Zugriff auf Elemente in Vektoren:
|
||||||
|
\begin{parts}
|
||||||
|
\part Definiere einen Vektor \code{x} mit Werten von 1:100.
|
||||||
|
\part Benutze eine \code{for} Schleife um jedes Element von
|
||||||
|
\code{x} auszugeben indem die Laufvariable zum indizieren benutzt wird.
|
||||||
|
\part ... gleiches nur ohne eine Laufvariable zu nutzen.
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erzeuge einen Vektor \verb+x+ mit 50 Zufallszahlen im
|
||||||
|
Bereich 0 - 10.
|
||||||
|
\begin{parts}
|
||||||
|
\part Benutze eine Schleife um das arithmetische Mittel zu
|
||||||
|
berechnen. Der Mittelwert ist definiert als:
|
||||||
|
$\overline{x}=\frac{1}{n}\sum\limits_{i=0}^{n}x_i $.
|
||||||
|
\part Benutze eine Schleife um die Standardabweichung zu
|
||||||
|
bestimmen:
|
||||||
|
$\sigma=\sqrt{\frac{1}{n}\sum\limits_{i=0}^{n}(x_i-\overline{x})^2}$).
|
||||||
|
\part Suche in der MATLAB Hilfe nach Funktionen, die das f\"ur
|
||||||
|
dich tun :-).
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Implementiere eine \code{while} Schleife
|
||||||
|
\begin{parts}
|
||||||
|
\part ... die 100 mal durchlaufen wird. Gib den aktuellen
|
||||||
|
Durchlauf im Schleifenk\"orper aus.
|
||||||
|
\part ... die endlos l\"auft. Sie kann mir \code{Strg + C}
|
||||||
|
abgebrochen werden.
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Nutze eine endlose \code{while} Schleife um einzeln die
|
||||||
|
Elemente eines Vektor der L\"ange 10 auszugeben.
|
||||||
|
|
||||||
|
\question Benutze eine endlose \verb+while+ Schleife um so lange
|
||||||
|
Zufallszahlen (\verb+randn+) zu ziehen, bis eine Zahl gr\"o{\ss}er
|
||||||
|
1.33 gezogen wurde.
|
||||||
|
\begin{parts}
|
||||||
|
\part Z\"ahle die Anzahl n\"otiger Versuche.
|
||||||
|
\part Nuzte eine \code{for} Schleife um den vorherigen Test
|
||||||
|
1000 mal laufen zu lassen. Merke Dir alle Anzahlen und berechne den
|
||||||
|
Mittelwert davon.
|
||||||
|
\part Plotte die Anzahl notwendiger Versuche.
|
||||||
|
\part Spiele mit der Schwelle, was passiert?
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erstelle \verb+x+ einen Vektor mit 10 Zufallszahlen im
|
||||||
|
Bereich 0:10.
|
||||||
|
\begin{parts}
|
||||||
|
\part Benutze eine \code{for} Schleife um all die Elemente zu
|
||||||
|
loeschen (\code{x(index) = [];}), die kleiner als 5 sind.
|
||||||
|
\part Loesche alle Elemente die kleiner als 5 und groesser als 2
|
||||||
|
sind.
|
||||||
|
\part Kann man das gleiche auch ohne eine Schleife erledigen?
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Teste den Zufallsgenerator! Dazu z\"ahle die Anzahl der
|
||||||
|
Elemente, die durch folgende Grenzen getrennt werden [0.0, 0.2,
|
||||||
|
0.4, 0.6, 0.8, 1.0]. Speichere die Ergebnisse in einem passenden
|
||||||
|
Vektor. Nutze eine Schleife um 1000 Zufallszahlen mit
|
||||||
|
\verb+rand()+ (siehe Hilfe) zu ziehen. Was waere die Erwartung,
|
||||||
|
was kommt heraus?
|
||||||
|
|
||||||
|
\question String parsing: Mitunter werden Dateinamen von
|
||||||
|
Datens\"atzen benutzt um anzuzeigen, unter welchen Bedingungen die
|
||||||
|
Daten gewonnen wurden. Man muss also den Dateinamen parsen und die
|
||||||
|
f\"ur einen relevante Information herausfiltern.
|
||||||
|
\begin{parts}
|
||||||
|
\part Erstelle eine Variable
|
||||||
|
\verb+filename = '2015-10-12_100Hz_1.25V.dat'+. Der Unterstrich
|
||||||
|
ist offensichtlich das verwendete Trennzeichen.
|
||||||
|
\part Benutze eine \verb+for+ Schleife um durch alle Zeichen zu
|
||||||
|
laufen. Vergleiche jedes Zeichen mit dem Unterstrich und merke
|
||||||
|
Dir die Positionen in einem Vektor.
|
||||||
|
\part Benutze eine zweite Schleife um durch diesen
|
||||||
|
Positionsvektor zu laufen und benutze die darin enthaltene
|
||||||
|
Information um den \code{filename} in Teile zu schneiden.
|
||||||
|
\part Gib die einzelnen Teile auf dem Bildschirm aus.
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\end{questions}
|
||||||
|
|
||||||
|
\end{document}
|
219
programming/exercises/scripts_functions_de.tex
Normal file
219
programming/exercises/scripts_functions_de.tex
Normal file
@ -0,0 +1,219 @@
|
|||||||
|
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||||
|
%\documentclass[answers,12pt,a4paper,pdftex]{exam}
|
||||||
|
|
||||||
|
\usepackage[german]{babel}
|
||||||
|
\usepackage{natbib}
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage[small]{caption}
|
||||||
|
\usepackage{sidecap}
|
||||||
|
\usepackage{pslatex}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{amssymb}
|
||||||
|
\setlength{\marginparwidth}{2cm}
|
||||||
|
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||||
|
|
||||||
|
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||||
|
\pagestyle{headandfoot}
|
||||||
|
\header{{\bfseries\large \"Ubung 5}}{{\bfseries\large Skripte und Funktionen}}{{\bfseries\large 15. November, 2016}}
|
||||||
|
\firstpagefooter{Prof. Jan Benda}{Phone: 29 74 573}{Email:
|
||||||
|
jan.benda@uni-tuebingen.de}
|
||||||
|
\runningfooter{}{\thepage}{}
|
||||||
|
|
||||||
|
\setlength{\baselineskip}{15pt}
|
||||||
|
\setlength{\parindent}{0.0cm}
|
||||||
|
\setlength{\parskip}{0.3cm}
|
||||||
|
\renewcommand{\baselinestretch}{1.15}
|
||||||
|
|
||||||
|
|
||||||
|
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage{listings}
|
||||||
|
\lstset{
|
||||||
|
language=Matlab,
|
||||||
|
basicstyle=\ttfamily\footnotesize,
|
||||||
|
numbers=left,
|
||||||
|
numberstyle=\tiny,
|
||||||
|
title=\lstname,
|
||||||
|
showstringspaces=false,
|
||||||
|
commentstyle=\itshape\color{darkgray},
|
||||||
|
breaklines=true,
|
||||||
|
breakautoindent=true,
|
||||||
|
columns=flexible,
|
||||||
|
frame=single,
|
||||||
|
xleftmargin=1em,
|
||||||
|
xrightmargin=1em,
|
||||||
|
aboveskip=10pt
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\vspace*{-6.5ex}
|
||||||
|
\begin{center}
|
||||||
|
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
||||||
|
{\large Jan Grewe, Jan Benda}\\[-3ex]
|
||||||
|
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
|
||||||
|
Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
||||||
|
werden. Im Gegensatz zu den vorherigen \"Ubungsbl\"attern k\"onnen die
|
||||||
|
L\"osungen nicht mehr in einer Datei gemacht werden. Die L\"osungen
|
||||||
|
also als zip-Archiv auf ILIAS hochladen. Das Archiv sollte nach dem Muster:
|
||||||
|
``skripte\_funktionen\_\{nachname\}.zip'' benannt werden.
|
||||||
|
|
||||||
|
\begin{questions}
|
||||||
|
|
||||||
|
\question Berechne die Fakult\"at einer Zahl.
|
||||||
|
\begin{parts}
|
||||||
|
\part Version 1: Schreibe eine Skript, das die Fakult\"at von 5 berechnet und das
|
||||||
|
Resultat auf dem Bildschirm ausgibt.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{factorialscripta.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Version 2: Wie Version 1, aber als Funktion, die als
|
||||||
|
Argument die Zahl, von der die Fakult\"at berechnet werden soll,
|
||||||
|
\"ubernimmt.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{printfactorial.m}
|
||||||
|
\lstinputlisting{factorialscriptb.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Version 3: Wie Version 2, die Funktion soll den berechneten
|
||||||
|
Wert nicht ausgeben, sondern als Funktionswert zur\"uckgeben. Das
|
||||||
|
aufrufende Skript soll dann den berechneten Wert auf dem
|
||||||
|
Bildschirm ausgeben.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{myfactorial.m}
|
||||||
|
\lstinputlisting{factorialscriptc.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Grafische Darstellung einer Sinuswelle.
|
||||||
|
\begin{parts}
|
||||||
|
\part Implementiere eine Funktion, die einen Sinus mit der
|
||||||
|
Amplitude 1 und der Frequenz $f = $ 50\,Hz plottet ($\sin(2\pi \cdot
|
||||||
|
f \cdot t)$). Rufe die Funktion auf.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{plotsine50.m}
|
||||||
|
\lstinputlisting{plotsinea.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Erweitere die Funktion so, dass die L\"ange der Zeitachse,
|
||||||
|
die Amplitude, und die Frequenz als Argumente \"ubergeben werden
|
||||||
|
k\"onnen. Die Schrittweite soll in der Funktion aus der Frequenz
|
||||||
|
berechnet werden.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{plotsine.m}
|
||||||
|
\lstinputlisting{plotsineb.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Verlagere alle plot Befehle in das aufrufende Skript
|
||||||
|
und ver\"andere die Funktion so, dass sie sowohl den Sinus als
|
||||||
|
auch die Zeitachse zur\"uckgibt.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{sinewave.m}
|
||||||
|
\lstinputlisting{plotsinec.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Schreibe eine zweite Funktion, die den Sinus plotted und
|
||||||
|
daf\"ur die Zeitachse und den Sinus als Argument erh\"alt. Diese
|
||||||
|
Funktion soll die Achsen richtig beschriften. Schreibe ein kleines
|
||||||
|
Skript, dass beide Funktionen aufruft, um einen Sinus von 5\,Hz
|
||||||
|
mit der Amplitude 2 \"uber 1.5 Sekunden zu plotten.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{plotsinewave.m}
|
||||||
|
\lstinputlisting{plotsined.m}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
%\question Schreibe eine Funktion, die bin\"are Datens\"atze
|
||||||
|
%('signal.bin' und 'signal2.bin' vom Montag) liest und die Daten als
|
||||||
|
%Vektor zur\"uckgibt. Welche Argumente muss die Funktion
|
||||||
|
%\"ubernehmen?
|
||||||
|
|
||||||
|
\question Random Walk.
|
||||||
|
\begin{parts}
|
||||||
|
\part Lies die Aufgabe bis zum Ende durch. \"Uberlege dir dann ein
|
||||||
|
geeignetes ``Programmlayout'' aus Funktionen und Skripten.
|
||||||
|
|
||||||
|
Was w\"are eine geeigente Funktion f\"ur diese Aufgabe? Welche
|
||||||
|
Argumente sollte sie entgegennehmen? Was soll sie berechnen und
|
||||||
|
zur\"uckgeben?
|
||||||
|
\begin{solution}
|
||||||
|
One function that computes one realisation of a random walk.
|
||||||
|
Scripts for plotting and analysis.
|
||||||
|
\lstinputlisting{randomwalkthresh.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Simuliere und plotte die Positionen von 10 Realisationen
|
||||||
|
eines random walk mit gleichen Wahrscheinlichkeiten f\"ur beide
|
||||||
|
Richtungen. Jeder Walker startet an der Position 0 und soll so
|
||||||
|
lange laufen, bis er den Wert 50 \"uberschreitet oder den Wert
|
||||||
|
$-50$ unterschreitet.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{randomwalkscriptb.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Jetzt wollen wir die Wahrscheinlichkeit $p$ f\"ur eine
|
||||||
|
Bewegung zu gr\"o{\ss}eren Positionen im Bereich $0.5 \le p < 0.8$
|
||||||
|
variieren. Simuliere 10 Realisationen des random walk f\"ur vier
|
||||||
|
verschiedene Wahrscheinlichkeiten.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{randomwalkscriptc.m}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Wie entwickelt sich die mittlere ben\"otigte Schrittanzahl
|
||||||
|
in Abh\"angigkeit der Wahrscheinlichkeit? Stelle die Mittelwerte
|
||||||
|
und die Standardabweichungen graphisch dar.
|
||||||
|
\begin{solution}
|
||||||
|
\lstinputlisting{randomwalkscriptd.m}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
%\question Modellierung des exponentiellen Wachstums einer isolierten
|
||||||
|
%Population. Das exponentielle Wachstum einer isolierten Population
|
||||||
|
%wird \"uber folgende Differentialgleichung beschrieben:
|
||||||
|
%\begin{equation}
|
||||||
|
% \frac{dN}{dt} = N \cdot r,
|
||||||
|
%\end{equation}
|
||||||
|
%mit $N$ der Populationsgr\"o{\ss}e und $r$ der Wachstumsrate.
|
||||||
|
%\begin{parts}
|
||||||
|
% \part L\"ose die Gleichung numerisch mit dem Euler Verfahren.
|
||||||
|
% \part Implementiere eine Funktion, die die Populationsgr\"o{\ss}e
|
||||||
|
% und die Zeit zur\"uckgibt.
|
||||||
|
% \part Plotte die Populationsgr\"o{\ss}e als Funktion der Zeit.
|
||||||
|
%\end{parts}
|
||||||
|
|
||||||
|
%\question Etwas realistischer ist das logistische Wachstum einer
|
||||||
|
%isolierten Population, bei der das Wachstum durch eine Kapazit\"at
|
||||||
|
%gedeckelt ist. Sie wird mit folgender Differentialgleichung
|
||||||
|
%beschrieben:
|
||||||
|
%\begin{equation}
|
||||||
|
% \frac{dN}{dt} = N \cdot r \cdot \left( 1 - \frac{N}{K} \right)
|
||||||
|
%\end{equation}
|
||||||
|
%mit $N$ der Population, der Wachstumsrate $r$ und $K$ der ``tragenden''
|
||||||
|
%Kapazit\"at.
|
||||||
|
%\begin{parts}
|
||||||
|
% \part Implementiere die L\"osung des logistischen Wachstums in
|
||||||
|
% einer Funktion. Benutze das Euler Verfahren. Die Funktion soll die
|
||||||
|
% Parameter $r$, $K$ sowie den Startwert von $N$ als Argumente
|
||||||
|
% \"ubernehmen.
|
||||||
|
% \part Die Funktion soll die Populationsgr\"o{\ss}e und die Zeit
|
||||||
|
% zur\"uckgeben.
|
||||||
|
% \part Simuliere das Wachstum mit einer Anzahl unterschiedlicher
|
||||||
|
% Startwerte f\"ur $N$.
|
||||||
|
% \part Stelle die Ergebnisse in einem Plot graphisch dar.
|
||||||
|
% \part Plotte das Wachstum $dN/dt$ als Funktion der
|
||||||
|
% Populationsgr\"o{\ss}e $N$.
|
||||||
|
%\end{parts}
|
||||||
|
|
||||||
|
\end{questions}
|
||||||
|
|
||||||
|
\end{document}
|
@ -15,7 +15,7 @@
|
|||||||
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||||
\pagestyle{headandfoot}
|
\pagestyle{headandfoot}
|
||||||
\header{{\bfseries\large \"Ubung 1}}{{\bfseries\large Variablen und Datentypen}}{{\bfseries\large 18. Oktober, 2016}}
|
\header{{\bfseries\large Exercise 1}}{{\bfseries\large Variables und Datatypes}}{{\bfseries\large 17. Oktober, 2017}}
|
||||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||||
jan.grewe@uni-tuebingen.de}
|
jan.grewe@uni-tuebingen.de}
|
||||||
\runningfooter{}{\thepage}{}
|
\runningfooter{}{\thepage}{}
|
||||||
@ -26,123 +26,108 @@
|
|||||||
\renewcommand{\baselinestretch}{1.15}
|
\renewcommand{\baselinestretch}{1.15}
|
||||||
|
|
||||||
\newcommand{\code}[1]{\texttt{#1}}
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}
|
\renewcommand{\solutiontitle}{\noindent\textbf{Solutions:}\par\noindent}
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\vspace*{-6.5ex}
|
\vspace*{-6.5ex}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
\textbf{\Large Introduction to Scientific Computing}\\[1ex]
|
||||||
{\large Jan Grewe, Jan Benda}\\[-3ex]
|
{\large Jan Grewe, Jan Benda}\\[-3ex]
|
||||||
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
|
Neuroethology \hfill --- \hfill Institute for Neurobiology \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
|
||||||
\end{center}
|
\end{center}
|
||||||
|
|
||||||
Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
|
The exercises are meant for self-monitoring, revision of the lecture
|
||||||
Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
topic. You should try to solve them on your own. Your solution should
|
||||||
werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
|
be submitted as a single script (m-file) in the Ilias system. Each
|
||||||
im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
|
task should be solved in its own ``cell''. Each cell must be
|
||||||
``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
|
executable on its own. The file should be named according to the following pattern:
|
||||||
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:\linebreak
|
``variables\_datatypes\_\{lastname\}.m'' benannt werden
|
||||||
``variablen\_datentypen\_\{nachname\}.m'' benannt werden
|
(e.g. variables\_datentypes\_mueller.m).
|
||||||
(z.B. variablen\_datentypen\_mueller.m).
|
|
||||||
|
|
||||||
\begin{questions}
|
\begin{questions}
|
||||||
|
\question Creating and deleting variables:
|
||||||
\question Erzeugen und L\"oschen von Variablen:
|
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Erzeuge zwei Variablen \code{a}, \code{b} und weise ihnen
|
\part Create two new variables \code{a}, \code{b} and assign arbitrary values to them. End each command with a semicolon. Create a variable \code{c} that is empty.
|
||||||
unterschiedliche Werte zu. Schlie{\ss}e die Zeilen mit einem
|
|
||||||
Semikolon ab. Erstelle eine Variable \code{c} die leer ist.
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{a = 1;} \code{b = 2;} \code{c = [];}
|
\code{a = 1;} \code{b = 2;} \code{c = [];}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Lass die Werte der Variablen ausgeben.
|
\part Print the varaibles and their content in the matlab command line
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{disp(a)}; \code{disp(b)}; \code{disp(c)}
|
\code{disp(a)}; \code{disp(b)}; \code{disp(c)}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Benuzte die Kommandozeile um herauszufinden, welche Variablen
|
\part Use the appropriate command to find out which variables have been created.
|
||||||
es im Workspace gibt.
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{who}
|
\code{who}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Benuzte die Kommandozeile um herauszufinden, welche Datentypen sie haben.
|
\part Use the appropriate command to additionally display the data type.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{whos} oder \code{class(a)}, \code{class(b)}, \code{class(c)}
|
\code{whos} or \code{class(a)}, \code{class(b)}, \code{class(c)}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Finde in der Hilfe mehr Information \"uber das \code{clear} Kommando.
|
\part Use the help system to learn about the \code{clear} command.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{help clear}
|
\code{help clear}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part L\"osche eine Variable.
|
\part Delete a single variable.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{clear a}
|
\code{clear a}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part L\"osche alle \"ubrigen Variablen.
|
\part Delete all remaining variables.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{clear all} oder einfach \code{clear}
|
\code{clear all} or simply \code{clear}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\end{parts}
|
\end{parts}
|
||||||
|
|
||||||
\question Operationen auf Variablen:
|
\question Working with variables:
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Erstelle die Variablen \code{a} und \code{b} und weise ihnen
|
\part Create two new variables \code{a}, \code{b} and assign arbitrary numeric values.
|
||||||
beliebige Werte zu.
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{a = 5; b = 3.14;}
|
\code{a = 5; b = 3.14;}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Addiere beliebige andere Zahlen zu den Variablen \code{a} und \code{b}.
|
\part Add a number to \code{a} and \code{b}.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{a + 5} \code{b + 7.28}
|
\code{a + 5} \code{b + 7.28}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Addiere die Variablen.
|
\part Add the variables themselves.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{a + b}
|
\code{a + b}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Mulipliziere die Variablen miteinander.
|
\part Multiply \code{a} and \code{b}.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{a * b}
|
\code{a * b}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part \"Andern sich die urspr\"unglichen Werte der Variablen?
|
\part Do \code{a} and \code{b} change?
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Nein, die Operationen benutzen die Werte der Variablen. Die
|
No, we make use of the stored values, the values remaing untouched.
|
||||||
Variablen bleiben unver\"andert.
|
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part F\"uhre eine beliebige Berechnungen mit den Variablen aus und
|
\part Execute any arithmetic operation with \code{a} and \code{b} and store the result in a new variabel \code{x}.
|
||||||
weise die Ergebnisse einer neuen Variable \code{x} zu.
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{x = a * b;}
|
\code{x = a * b;}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Weise \code{a} und \code{b} neue Werte zu. Hat sich etwas am
|
\part Assign new values to \code{a} and \code{b}. Did \code{x} change?
|
||||||
Wert von \code{x} ge\"andert?
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Nein, der Variablen \code{x} wird ein Wert zugewiesen, der sich
|
No, the content of \code{x} does not change, it stores a value, \textbf{not} a recipe.
|
||||||
nicht \"andert bis der Variablen ein neuer Wert zugewiesen
|
|
||||||
wird. Die Variable 'x' speichert das Resultat der Rechnung
|
|
||||||
\textbf{nicht} die Anweisung.
|
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\end{parts}
|
\end{parts}
|
||||||
|
|
||||||
\question Berechne die Fakult\"at von 5:
|
\question Calculate the faculty of 5:
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Erzeuge eine Variable \code{x} und weise ihr den Wert 1 zu.
|
\part Create a variable \code{x} an assign the value 1.
|
||||||
\part Berechne den ersten Schritt (\code{*2}) und weise das Ergebnis \code{x}
|
\part In a first step multiply \code{x} with 2 and assign the result to \code{x} itself.
|
||||||
zu.
|
\part Proceed in a similar manner until x stores $5!$.
|
||||||
\part Fahre schrittweise fort, bis die Fakult\"at von 5 berechnet ist. \code{x}
|
|
||||||
sollte nun das Endergebnis enthalten.
|
|
||||||
\end{parts}
|
\end{parts}
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{x = 1;} \\ \code{x = x * 2;}\\ \code{x = x * 3;} \\ \code{x = x * 4;} \\ \code{x = x * 5;}\\ \code{disp(x)}\\
|
\code{x = 1;} \\ \code{x = x * 2;}\\ \code{x = x * 3;} \\ \code{x = x * 4;} \\ \code{x = x * 5;}\\ \code{disp(x)}\\
|
||||||
\code{ 120}
|
\code{ 120}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
|
||||||
\question Erstelle eine Variable, die einen beliebigen Text enth\"alt. Was
|
\question Create a variable and assign a string to it. What is the data type of that variable?
|
||||||
ist ihr Datentyp?
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{x = 'einfacher Text'}\\ \code{class(x)\\ char}
|
\code{x = 'some text'}\\ \code{class(x)\\ char}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
|
||||||
\question Was sind die gr\"o{\ss}ten Zahlen, die in den Integer 8, 16, 32
|
\question List the largest numbers that can stored in 8, 16, 32
|
||||||
und 64 bit Datentypen abgelegt werden k\"onnen?
|
and 64 bit integer data types?
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\verb+2^8 / 2 - 1+\\
|
\verb+2^8 / 2 - 1+\\
|
||||||
\verb+2^16 / 2 - 1+\\
|
\verb+2^16 / 2 - 1+\\
|
||||||
@ -150,94 +135,86 @@ voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:\linebreak
|
|||||||
\verb+2^64 / 2 - 1+
|
\verb+2^64 / 2 - 1+
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
|
||||||
\question Erstelle eine Variable des 8 Bit Integer Datentyps und weise
|
\question Create an 8 bit integer variable \code{x} and assign a
|
||||||
ihr einen Wert zu. Addiere \code{300}. Welchen Wert enth\"alt nun die
|
valid numeric value to it. Add \code{300} and re-assign the result
|
||||||
Variable? Warum?
|
to \code{x}. Which value is now stored in \code{x}? Why?
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{x = int8(35);\\x = x + 300;\\ disp(x)\\ 127}\\
|
\code{x = int8(35);\\x = x + 300;\\ disp(x)\\ 127}\\
|
||||||
Der Datentype int8 kann nur Werte von -128 bis 127 speichern.
|
The int8 dtype can only store values between -128 and 127.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
|
||||||
\question Erkl\"are die Ausgaben von \code{int8(1024)} und \code{uint8(1024)}.
|
\question Explain the output of the follwoing commands: \code{int8(1024)} and \code{uint8(1024)}.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Der int8 Datentyp kann Werte von -128 bis maximal 127 ablegen. Der
|
int8 can store values between -128 and 127. uint8 is
|
||||||
uint8 Typ ist \textit{unsigned}, er speichert Werte zwischen 0 und
|
\textit{unsigned}, ist stores values between 0 and 255.
|
||||||
255.
|
|
||||||
\end{solution}
|
\end{solution}
|
||||||
|
|
||||||
\question Typkonvertierung:
|
\question Typeconversion:
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part F\"uhre aus: \code{x = 131.333}. Welchen Datentyp hat die
|
\part Execute: \code{x = 131.333}. What is the datatype of \code{x}?
|
||||||
Variable \code{x}?
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Sie hat den Typ \textit{double}.
|
\textit{double}.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Wandle \code{x} in den speichereffizientesten Integer Datentypen um.
|
\part Convert \code{x} to the most efficient integer datatype.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{x = uint8(x);}\\Ben\"otigt 8 bit anstelle der 64 bit f\"ur
|
\code{x = uint8(x);}\\Needs 8 bit instead of 64 bit for double.
|
||||||
den double.
|
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Welchen Wert hat nun \code{x} ?
|
\part What is the value stored in \code{x} after conversion?
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
131
|
131
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\end{parts}
|
\end{parts}
|
||||||
|
|
||||||
\question Flie{\ss}kommazahlen 1: Endliche Pr\"azision bei Addition
|
\question Floating point numbers I: Limited precision during additions
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Weise der Variablen \code{a} eine Zahl mit Nachkommastellen zu.
|
\part Create the variable \code{a} and assign an arbitrary floting point number.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{a = 3.14;}
|
\code{a = 3.14;}
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Eine weitere Variable \code{b} soll den Wert \code{a+0.001}
|
\part A second variable \code{b} stores the value \code{a+0.001}. What is the result of \code{b-a} ?
|
||||||
haben. Was ist das Ergebnis von \code{b-a} ?
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{b = a + 0.001;}\\ \code{disp(b - a)\\0.001}\\
|
\code{b = a + 0.001;}\\ \code{disp(b - a)\\0.001}\\
|
||||||
Alles ok, Ergebnis wie erwartet.
|
All cool, result as expected.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Einer dritte Variable \code{c} soll der Wert \code{a+1e-16}
|
\part Create a third variable \code{c} and assign \code{a+1e-16}. What is the result of \code{c-a}? Why?
|
||||||
zugewiesen werden. Was ist das Ergebnis von \code{c-a} ? Warum?
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Das Ergebnis ist 0! Auch die double Werte haben nur eine endliche
|
Result is 0! Also with doubles there is a limited precision in
|
||||||
P\"azision in den Nachkommastellen.
|
the decimal part.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Berechne \verb=(2^52 + 1) - 2^52= sowie
|
\part Calculate \verb=(2^52 + 1) - 2^52= and
|
||||||
\verb=(2^53 + 1) - 2^53=.
|
\verb=(2^53 + 1) - 2^53=.
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Im Ersten Fall ist das Ergebnis = 1, im Zweiten = 0. Bei so
|
First command results in = 1, in the second case = 0. With such
|
||||||
gro{\ss}en Zahlen k\"onnen so kleine Unterschiede nicht mehr
|
high numbers, small differences (1!) cannot be resolved.
|
||||||
aufgel\"ost werden.
|
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Berechne \code{sqrt(1+1e-16)-1} . Ist das richtig? Warum?
|
\part Calculate \code{sqrt(1+1e-16)-1}. Is the result correct? Why (not)?
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Die Wurzel von 1 + etwas sollte nicht 1 sein! Das Ergebnis
|
Square root of something larger than 1 should not be 1 and thus
|
||||||
sollte nicht 0 sein.
|
the result must not be 0.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Vergleiche mit dem Ergebnis beim Addieren einer etwas
|
\part Compare wwith the result when adding a slightly largern number (e.g. 1e-8).
|
||||||
gr\"o{\ss}eren Zahl (z.B. 1e-8).
|
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Hier sollte das Ergebnis ungleich 0 sein.
|
Result is not equal to zero.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\end{parts}
|
\end{parts}
|
||||||
|
|
||||||
\question Flie{\ss}kommazahlen 2: Endliche Pr\"azision bei Multiplikation
|
\question Floating point numbers II: Limited precision during multiplications.
|
||||||
\begin{parts}
|
\begin{parts}
|
||||||
\part Weise der Variablen \code{a} die Zahl \code{4/3} zu.
|
\part Create a variable \code{a} and assign \code{4/3}.
|
||||||
\part Die Variable \code{b} soll den Wert \code{3*(a-1)} erhalten.
|
\part Variable \code{b} should contain the value \code{3*(a-1)}.
|
||||||
\part Welches Ergebnis erwartest du f\"ur \code{b-1} ?
|
\part What do you expect for \code{b-1}?
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{a = 4/3;}\\ \code{b = 3 * (a-1)}\\
|
\code{a = 4/3;}\\ \code{b = 3 * (a-1)}\\
|
||||||
b sollte nun 1 sein. d.h., \code{b-1} sollte 0 sein.
|
b should be 1. i.e., \code{b-1} should give 0.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Berechne mit matlab \code{b-1} !
|
\part Calculate with matlab \code{b-1}!
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
\code{disp(b - 1)\\ -2.2204e-16}\\ Aufgrund von Rundungsfehlern
|
\code{disp(b - 1)\\ -2.2204e-16}\\ Due to rounding mistakes.
|
||||||
kommt es zu diesem Ergebnis.
|
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\part Was sollte \code{sin(pi)} ergeben ? Was sagt matlab?
|
\part What should be the result of \code{sin(pi)}? What gives matlab?
|
||||||
\begin{solution}
|
\begin{solution}
|
||||||
Sollte 0 sein, ist es aber nicht. Wie oben, Rundungsfehler
|
Should be 0, but it is not. See above, due to rounding errors we
|
||||||
f\"uhren zu diesen Abweichungen.
|
get some deviation.
|
||||||
\end{solution}
|
\end{solution}
|
||||||
\end{parts}
|
\end{parts}
|
||||||
|
|
||||||
|
246
programming/exercises/variables_types_de.tex
Normal file
246
programming/exercises/variables_types_de.tex
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||||
|
|
||||||
|
\usepackage[german]{babel}
|
||||||
|
\usepackage{natbib}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage[small]{caption}
|
||||||
|
\usepackage{sidecap}
|
||||||
|
\usepackage{pslatex}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{amssymb}
|
||||||
|
\usepackage{lipsum}
|
||||||
|
\setlength{\marginparwidth}{2cm}
|
||||||
|
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||||
|
|
||||||
|
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||||
|
\pagestyle{headandfoot}
|
||||||
|
\header{{\bfseries\large \"Ubung 1}}{{\bfseries\large Variablen und Datentypen}}{{\bfseries\large 18. Oktober, 2016}}
|
||||||
|
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||||
|
jan.grewe@uni-tuebingen.de}
|
||||||
|
\runningfooter{}{\thepage}{}
|
||||||
|
|
||||||
|
\setlength{\baselineskip}{15pt}
|
||||||
|
\setlength{\parindent}{0.0cm}
|
||||||
|
\setlength{\parskip}{0.3cm}
|
||||||
|
\renewcommand{\baselinestretch}{1.15}
|
||||||
|
|
||||||
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
|
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\vspace*{-6.5ex}
|
||||||
|
\begin{center}
|
||||||
|
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
||||||
|
{\large Jan Grewe, Jan Benda}\\[-3ex]
|
||||||
|
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
|
||||||
|
Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
||||||
|
werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
|
||||||
|
im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
|
||||||
|
``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
|
||||||
|
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:\linebreak
|
||||||
|
``variablen\_datentypen\_\{nachname\}.m'' benannt werden
|
||||||
|
(z.B. variablen\_datentypen\_mueller.m).
|
||||||
|
|
||||||
|
\begin{questions}
|
||||||
|
|
||||||
|
\question Erzeugen und L\"oschen von Variablen:
|
||||||
|
\begin{parts}
|
||||||
|
\part Erzeuge zwei Variablen \code{a}, \code{b} und weise ihnen
|
||||||
|
unterschiedliche Werte zu. Schlie{\ss}e die Zeilen mit einem
|
||||||
|
Semikolon ab. Erstelle eine Variable \code{c} die leer ist.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 1;} \code{b = 2;} \code{c = [];}
|
||||||
|
\end{solution}
|
||||||
|
\part Lass die Werte der Variablen ausgeben.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(a)}; \code{disp(b)}; \code{disp(c)}
|
||||||
|
\end{solution}
|
||||||
|
\part Benuzte die Kommandozeile um herauszufinden, welche Variablen
|
||||||
|
es im Workspace gibt.
|
||||||
|
\begin{solution}
|
||||||
|
\code{who}
|
||||||
|
\end{solution}
|
||||||
|
\part Benuzte die Kommandozeile um herauszufinden, welche Datentypen sie haben.
|
||||||
|
\begin{solution}
|
||||||
|
\code{whos} oder \code{class(a)}, \code{class(b)}, \code{class(c)}
|
||||||
|
\end{solution}
|
||||||
|
\part Finde in der Hilfe mehr Information \"uber das \code{clear} Kommando.
|
||||||
|
\begin{solution}
|
||||||
|
\code{help clear}
|
||||||
|
\end{solution}
|
||||||
|
\part L\"osche eine Variable.
|
||||||
|
\begin{solution}
|
||||||
|
\code{clear a}
|
||||||
|
\end{solution}
|
||||||
|
\part L\"osche alle \"ubrigen Variablen.
|
||||||
|
\begin{solution}
|
||||||
|
\code{clear all} oder einfach \code{clear}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Operationen auf Variablen:
|
||||||
|
\begin{parts}
|
||||||
|
\part Erstelle die Variablen \code{a} und \code{b} und weise ihnen
|
||||||
|
beliebige Werte zu.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 5; b = 3.14;}
|
||||||
|
\end{solution}
|
||||||
|
\part Addiere beliebige andere Zahlen zu den Variablen \code{a} und \code{b}.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a + 5} \code{b + 7.28}
|
||||||
|
\end{solution}
|
||||||
|
\part Addiere die Variablen.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a + b}
|
||||||
|
\end{solution}
|
||||||
|
\part Mulipliziere die Variablen miteinander.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a * b}
|
||||||
|
\end{solution}
|
||||||
|
\part \"Andern sich die urspr\"unglichen Werte der Variablen?
|
||||||
|
\begin{solution}
|
||||||
|
Nein, die Operationen benutzen die Werte der Variablen. Die
|
||||||
|
Variablen bleiben unver\"andert.
|
||||||
|
\end{solution}
|
||||||
|
\part F\"uhre eine beliebige Berechnungen mit den Variablen aus und
|
||||||
|
weise die Ergebnisse einer neuen Variable \code{x} zu.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = a * b;}
|
||||||
|
\end{solution}
|
||||||
|
\part Weise \code{a} und \code{b} neue Werte zu. Hat sich etwas am
|
||||||
|
Wert von \code{x} ge\"andert?
|
||||||
|
\begin{solution}
|
||||||
|
Nein, der Variablen \code{x} wird ein Wert zugewiesen, der sich
|
||||||
|
nicht \"andert bis der Variablen ein neuer Wert zugewiesen
|
||||||
|
wird. Die Variable 'x' speichert das Resultat der Rechnung
|
||||||
|
\textbf{nicht} die Anweisung.
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Berechne die Fakult\"at von 5:
|
||||||
|
\begin{parts}
|
||||||
|
\part Erzeuge eine Variable \code{x} und weise ihr den Wert 1 zu.
|
||||||
|
\part Berechne den ersten Schritt (\code{*2}) und weise das Ergebnis \code{x}
|
||||||
|
zu.
|
||||||
|
\part Fahre schrittweise fort, bis die Fakult\"at von 5 berechnet ist. \code{x}
|
||||||
|
sollte nun das Endergebnis enthalten.
|
||||||
|
\end{parts}
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = 1;} \\ \code{x = x * 2;}\\ \code{x = x * 3;} \\ \code{x = x * 4;} \\ \code{x = x * 5;}\\ \code{disp(x)}\\
|
||||||
|
\code{ 120}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\question Erstelle eine Variable, die einen beliebigen Text enth\"alt. Was
|
||||||
|
ist ihr Datentyp?
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = 'einfacher Text'}\\ \code{class(x)\\ char}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\question Was sind die gr\"o{\ss}ten Zahlen, die in den Integer 8, 16, 32
|
||||||
|
und 64 bit Datentypen abgelegt werden k\"onnen?
|
||||||
|
\begin{solution}
|
||||||
|
\verb+2^8 / 2 - 1+\\
|
||||||
|
\verb+2^16 / 2 - 1+\\
|
||||||
|
\verb+2^32 / 2 - 1+\\
|
||||||
|
\verb+2^64 / 2 - 1+
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\question Erstelle eine Variable des 8 Bit Integer Datentyps und weise
|
||||||
|
ihr einen Wert zu. Addiere \code{300}. Welchen Wert enth\"alt nun die
|
||||||
|
Variable? Warum?
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = int8(35);\\x = x + 300;\\ disp(x)\\ 127}\\
|
||||||
|
Der Datentype int8 kann nur Werte von -128 bis 127 speichern.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\question Erkl\"are die Ausgaben von \code{int8(1024)} und \code{uint8(1024)}.
|
||||||
|
\begin{solution}
|
||||||
|
Der int8 Datentyp kann Werte von -128 bis maximal 127 ablegen. Der
|
||||||
|
uint8 Typ ist \textit{unsigned}, er speichert Werte zwischen 0 und
|
||||||
|
255.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\question Typkonvertierung:
|
||||||
|
\begin{parts}
|
||||||
|
\part F\"uhre aus: \code{x = 131.333}. Welchen Datentyp hat die
|
||||||
|
Variable \code{x}?
|
||||||
|
\begin{solution}
|
||||||
|
Sie hat den Typ \textit{double}.
|
||||||
|
\end{solution}
|
||||||
|
\part Wandle \code{x} in den speichereffizientesten Integer Datentypen um.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = uint8(x);}\\Ben\"otigt 8 bit anstelle der 64 bit f\"ur
|
||||||
|
den double.
|
||||||
|
\end{solution}
|
||||||
|
\part Welchen Wert hat nun \code{x} ?
|
||||||
|
\begin{solution}
|
||||||
|
131
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Flie{\ss}kommazahlen 1: Endliche Pr\"azision bei Addition
|
||||||
|
\begin{parts}
|
||||||
|
\part Weise der Variablen \code{a} eine Zahl mit Nachkommastellen zu.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 3.14;}
|
||||||
|
\end{solution}
|
||||||
|
\part Eine weitere Variable \code{b} soll den Wert \code{a+0.001}
|
||||||
|
haben. Was ist das Ergebnis von \code{b-a} ?
|
||||||
|
\begin{solution}
|
||||||
|
\code{b = a + 0.001;}\\ \code{disp(b - a)\\0.001}\\
|
||||||
|
Alles ok, Ergebnis wie erwartet.
|
||||||
|
\end{solution}
|
||||||
|
\part Einer dritte Variable \code{c} soll der Wert \code{a+1e-16}
|
||||||
|
zugewiesen werden. Was ist das Ergebnis von \code{c-a} ? Warum?
|
||||||
|
\begin{solution}
|
||||||
|
Das Ergebnis ist 0! Auch die double Werte haben nur eine endliche
|
||||||
|
P\"azision in den Nachkommastellen.
|
||||||
|
\end{solution}
|
||||||
|
\part Berechne \verb=(2^52 + 1) - 2^52= sowie
|
||||||
|
\verb=(2^53 + 1) - 2^53=.
|
||||||
|
\begin{solution}
|
||||||
|
Im Ersten Fall ist das Ergebnis = 1, im Zweiten = 0. Bei so
|
||||||
|
gro{\ss}en Zahlen k\"onnen so kleine Unterschiede nicht mehr
|
||||||
|
aufgel\"ost werden.
|
||||||
|
\end{solution}
|
||||||
|
\part Berechne \code{sqrt(1+1e-16)-1} . Ist das richtig? Warum?
|
||||||
|
\begin{solution}
|
||||||
|
Die Wurzel von 1 + etwas sollte nicht 1 sein! Das Ergebnis
|
||||||
|
sollte nicht 0 sein.
|
||||||
|
\end{solution}
|
||||||
|
\part Vergleiche mit dem Ergebnis beim Addieren einer etwas
|
||||||
|
gr\"o{\ss}eren Zahl (z.B. 1e-8).
|
||||||
|
\begin{solution}
|
||||||
|
Hier sollte das Ergebnis ungleich 0 sein.
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Flie{\ss}kommazahlen 2: Endliche Pr\"azision bei Multiplikation
|
||||||
|
\begin{parts}
|
||||||
|
\part Weise der Variablen \code{a} die Zahl \code{4/3} zu.
|
||||||
|
\part Die Variable \code{b} soll den Wert \code{3*(a-1)} erhalten.
|
||||||
|
\part Welches Ergebnis erwartest du f\"ur \code{b-1} ?
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 4/3;}\\ \code{b = 3 * (a-1)}\\
|
||||||
|
b sollte nun 1 sein. d.h., \code{b-1} sollte 0 sein.
|
||||||
|
\end{solution}
|
||||||
|
\part Berechne mit matlab \code{b-1} !
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(b - 1)\\ -2.2204e-16}\\ Aufgrund von Rundungsfehlern
|
||||||
|
kommt es zu diesem Ergebnis.
|
||||||
|
\end{solution}
|
||||||
|
\part Was sollte \code{sin(pi)} ergeben ? Was sagt matlab?
|
||||||
|
\begin{solution}
|
||||||
|
Sollte 0 sein, ist es aber nicht. Wie oben, Rundungsfehler
|
||||||
|
f\"uhren zu diesen Abweichungen.
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\end{questions}
|
||||||
|
|
||||||
|
\end{document}
|
410
programming/exercises/vectors_matrices_de.tex
Normal file
410
programming/exercises/vectors_matrices_de.tex
Normal file
@ -0,0 +1,410 @@
|
|||||||
|
\documentclass[12pt,a4paper,pdftex]{exam}
|
||||||
|
|
||||||
|
\usepackage[german]{babel}
|
||||||
|
\usepackage{natbib}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage[small]{caption}
|
||||||
|
\usepackage{sidecap}
|
||||||
|
\usepackage{pslatex}
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{amssymb}
|
||||||
|
\setlength{\marginparwidth}{2cm}
|
||||||
|
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||||
|
|
||||||
|
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||||
|
\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung
|
||||||
|
2}}{{\bfseries\large Vektoren und Matrizen}}{{\bfseries\large 12. Oktober, 2015}}
|
||||||
|
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||||
|
jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}
|
||||||
|
|
||||||
|
\setlength{\baselineskip}{15pt}
|
||||||
|
\setlength{\parindent}{0.0cm}
|
||||||
|
\setlength{\parskip}{0.3cm}
|
||||||
|
\renewcommand{\baselinestretch}{1.15}
|
||||||
|
|
||||||
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
|
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\vspace*{-6.5ex}
|
||||||
|
\begin{center}
|
||||||
|
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
||||||
|
{\large Jan Grewe, Jan Benda}\\[-3ex]
|
||||||
|
Abteilung Neuroethologie \hfill --- \hfill Institut f\"ur Neurobiologie \hfill --- \hfill \includegraphics[width=0.28\textwidth]{UT_WBMW_Black_RGB} \\
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
Die folgenden Aufgaben dienen der Wiederholung, \"Ubung und
|
||||||
|
Selbstkontrolle und sollten eigenst\"andig bearbeitet und gel\"ost
|
||||||
|
werden. Die L\"osung soll in Form eines einzelnen Skriptes (m-files)
|
||||||
|
im ILIAS hochgeladen werden. Jede Aufgabe sollte in einer eigenen
|
||||||
|
``Zelle'' gel\"ost sein. Die Zellen \textbf{m\"ussen} unabh\"angig
|
||||||
|
voneinander ausf\"uhrbar sein. Das Skript sollte nach dem Muster:
|
||||||
|
\linebreak ``vektoren\_matrizen\_\{nachname\}.m'' benannt werden
|
||||||
|
(z.B. vektoren\_matrizen\_mueller.m).
|
||||||
|
|
||||||
|
\begin{questions}
|
||||||
|
\section*{Vektoren}
|
||||||
|
\question Erzeuge Vektoren mit folgendem Inhalt:
|
||||||
|
\begin{parts}
|
||||||
|
\part Von 1 bis 10 in ganzzahligen Schritten.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 1:10;}
|
||||||
|
\end{solution}
|
||||||
|
\part Von 0 bis 20 in 2er Schritten.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 0:2:20;}
|
||||||
|
\end{solution}
|
||||||
|
\part Mit \textbf{absteigendem} Inhalt von 100 bis 0.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 100:-1:0;}
|
||||||
|
\end{solution}
|
||||||
|
\part In 10 Schritten von 0 bis 1.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 0:0.1:1;}
|
||||||
|
\end{solution}
|
||||||
|
\part In 11 Schritten von 0 bis 1.
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 0:1/11:1;}
|
||||||
|
\end{solution}
|
||||||
|
\part In 50 Schritten von 0 bis $2\pi$ ($\pi$ ist als Konstante
|
||||||
|
\code{pi} in Matlab definiert).
|
||||||
|
\begin{solution}
|
||||||
|
\code{a = 0:2*pi/50:2*pi;}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Rechnen mit Vektoren:
|
||||||
|
\begin{parts}
|
||||||
|
\part Definiere einen Vektor \code{x = [3 2 6 8];}
|
||||||
|
\part Wie gro{\ss} ist der Vektor? Benutze die Funktionen
|
||||||
|
\code{size} und \code{length}. Was ist der Unterschied zwischen
|
||||||
|
den beiden Funktionen?
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = [3 2 6 8]; \\ disp(length(x));\\ 4\\ disp(size(x))\\ 1 4}
|
||||||
|
\end{solution}
|
||||||
|
\part Wie \"andern sich \code{size} und \code{length} des
|
||||||
|
Vektors wenn er transponiert wird?
|
||||||
|
\begin{solution}
|
||||||
|
L\"ange \"andert sich nicht. R\"uckgabewert von size ist invertiert.
|
||||||
|
\end{solution}
|
||||||
|
\part Addiere 5 zu jedem Element von \verb+x+.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x + 5)}
|
||||||
|
\end{solution}
|
||||||
|
\part Multipliziere jedes Element von \code{x} mit 2;
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x * 2)}
|
||||||
|
\end{solution}
|
||||||
|
\part Definiere einen zweiten Vektor (\verb+y = [4 1 3 5];+).
|
||||||
|
Stelle sicher, dass \code{x} wieder in seiner urspr\"unglichen
|
||||||
|
Form ist.
|
||||||
|
\part Addiere beide Vektoren \code{x + y}.
|
||||||
|
\begin{solution}
|
||||||
|
\code{y = [4 1 3 5]; \\disp(x + y)\\7 3 9 13}
|
||||||
|
\end{solution}
|
||||||
|
\part Subtrahiere beide Vektoren \code{x - y}.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x - y)\\-1 1 3 3}
|
||||||
|
\end{solution}
|
||||||
|
\part Multipliziere beide Vektoren \code{x * y}.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x * y)\\Error using *. Inner matrix dimension must agree.}
|
||||||
|
\end{solution}
|
||||||
|
\part Erkl\"are die Fehlermeldung.
|
||||||
|
\begin{solution}
|
||||||
|
* ist der Operator f\"ur die Matrixmultiplikation. Bei dieser
|
||||||
|
muessen die inneren Dimensionen \"uebereinstimmen.\linebreak
|
||||||
|
\code{disp(size(x))\\1 4 \\disp(size(y)) \\ 1 4}\\
|
||||||
|
(m,n)*(n,o) w\"are ok.
|
||||||
|
\end{solution}
|
||||||
|
\part Was m\"usste man machen, damit \code{mtimes} bzw. der
|
||||||
|
\code{*} Operator funktionieren?
|
||||||
|
\begin{solution}
|
||||||
|
y m\"usste transponiert werden: \code{x * y'}
|
||||||
|
\end{solution}
|
||||||
|
\part Multipliziere die Vektoren elementweise (\code{x .* y})
|
||||||
|
und weise das Ergebnis eine neuen Variablen zu.
|
||||||
|
\begin{solution}
|
||||||
|
\code{z = x .* y;}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erzeugen von Vektoren mit Helferfunktionen:
|
||||||
|
\begin{parts}
|
||||||
|
\part Erstelle einen 100 Elemente langen Vektor mit der Funktion
|
||||||
|
\code{ones} (siehe Hilfe). Was macht sie?
|
||||||
|
\begin{solution}
|
||||||
|
\code{ones(100,1)} erzeugt einen Vektor bei dem alle Elemente mit 1 gef\"ullt sind.
|
||||||
|
\end{solution}
|
||||||
|
\part Erstelle einen 100 Elemente langen Vektor mit der Funktion
|
||||||
|
\code{zeros}. Was macht diese?
|
||||||
|
\begin{solution}
|
||||||
|
\code{zeros(100,1)} erzeugt einen Vektor bei dem alle Elemente mit 0 gef\"ullt sind.
|
||||||
|
\end{solution}
|
||||||
|
\part Erstelle einen 100 Elemente langen Vektor in dem jedes
|
||||||
|
Element den Wert 4.5 hat.
|
||||||
|
\begin{solution}
|
||||||
|
\code{ones(100,1) * 4.5}
|
||||||
|
\end{solution}
|
||||||
|
\part Erzeuge einen Vektor mit 100 Zufallszahlen (\code{rand},
|
||||||
|
siehe Hilfe).
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = rand(100,1)}
|
||||||
|
\end{solution}
|
||||||
|
\part Erzeuge einen Vektor mit 100 Werten zwischen 0 und 1
|
||||||
|
mithilfe der Funktion \code{linspace}.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = linspace(0,1,100)}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Indizieren in Vektoren:
|
||||||
|
\begin{parts}
|
||||||
|
\part Erzeuge einen Vektor mit 100 Elementen (0 - 100).
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = linspace(0,100,100);}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib jeweils den ersten, den letzten, den 5., 24. und den
|
||||||
|
vorletzten Wert aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x(1))\\ disp(x(end))\\ disp(x(5))\\ disp(x(24))\\ disp(x(end-1))}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib die ersten 10 Werte aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(1:10)}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib die letzten 10 Werte aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x(end-9:end))}
|
||||||
|
\end{solution}
|
||||||
|
\part Versuche den Wert an der Stelle 0 auszugeben.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(0)\\ Subscript indices must either be real positive integers or logicals.}
|
||||||
|
\end{solution}
|
||||||
|
\part Versuche den Wert an der Stelle 110 auszugeben.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(110)\\ Index exceeds matrix dimensions.}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib die Werte an den Stellen 3, 15, und 42 zusammen als
|
||||||
|
Vektor aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x([3 15 42]))}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib 10 zuf\"allig ausgew\"ahlte Werte aus (benutze
|
||||||
|
\verb+randi+ um die Indizes zu erstellen).
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(randi(100,10,1))}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erzeuge eine Variable und speichere etwas Text in ihr,
|
||||||
|
so dass mindestens 2 Worte vorhanden sind. (z.B. \code{x = 'some
|
||||||
|
text'}). Benutze die Indizierung um die W\"orter einzeln
|
||||||
|
auszugeben.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = 'some text'; \\ disp(x(1:4))\\disp(x(6:end))}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
|
||||||
|
\newpage
|
||||||
|
\section*{Matrizen}
|
||||||
|
|
||||||
|
\question Erstelle folgende Matrix
|
||||||
|
\[ A = \left( \begin{array}{ccc} 7 & 3 & 5 \\ 1 & 8 & 3 \\ 8 & 6 &
|
||||||
|
4 \end{array} \right) \]
|
||||||
|
\begin{parts}
|
||||||
|
\part Benutze die Funktion \code{size} um die Gr\"o{\ss}e vpm \code{A} anzeeigen zu lassen.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = [7 3 5; 1 8 3; 8 6 4];\\disp(size(x))}
|
||||||
|
\end{solution}
|
||||||
|
\part Finde heraus, wie man \code{size} aufruft um nur die L\"ange entlang einer einzelnen Dimension auszugeben. Gib einzeln die L\"angen beider Dimensionen aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(size(x, 1))}\\\code{disp(size(x, 2))}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib das Element in der 3. Zeile und 2. Spalte aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(3,2)}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib jeweils alle Elemente der 1., 2. und 3. Zeile aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x([1 2 3],:));}
|
||||||
|
\end{solution}
|
||||||
|
\part Gib jeweils alle Elemente der 1., 2., und 3. Spalte aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(x(:, 1))\\ disp(x(:, 2))\\ disp(x(:, 3))}
|
||||||
|
\end{solution}
|
||||||
|
\part Erh\"ohe das Element in der 2. Zeile und 3. Spalte um Eins.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(2,3) = x(2,3) + 1;}
|
||||||
|
\end{solution}
|
||||||
|
\part Ziehe von allen Elementen der 1. Zeile 5 ab.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(1,:) = x(1,:) - 5;}
|
||||||
|
\end{solution}
|
||||||
|
\part Multipliziere alle Elementen der 3. Spalte mit 2.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(:,3) = x(:,3) * 2;}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erstelle eine $5 \times 5$ Matrix \code{M} die
|
||||||
|
Zufallszahlen enth\"alt (nutze die MATLAB Funktion
|
||||||
|
\verb+randn()+. Benutze die Hilfe: Was macht die Funktion?).
|
||||||
|
\begin{parts}
|
||||||
|
\part Gib das Element in der 2. Zeile und 3. Spalte aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{M = randn(5, 5);}
|
||||||
|
\code{disp(M(2,3))}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Gib jeweils alle Elemente der 1., 3. und letzten Zeile aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(M(1,:)) \\ disp(M(3,:))\\ disp(M(size(M,1), :))}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Gib jeweils alle Elemente der 2. und 4. Spalte aus.
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(M(:,2))\\ disp(M(:,4))}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Greife mit einem einzigen Kommando auf die Elemente jeder
|
||||||
|
zweiten Spalte zu und speichere die Daten in einer neuen Variable.
|
||||||
|
\begin{solution}
|
||||||
|
\code{y = M(:, [2:2:size(M,2)])}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Berechne jeweils den Mittelwert der 1., 3. und 5. Zeile
|
||||||
|
(Funktion \code{mean}, siehe Hilfe).
|
||||||
|
\begin{solution}
|
||||||
|
\code{mean(M([1 3 5],:), 2)}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Berechne die Summe aller Werte der 2. und 4. Spalte
|
||||||
|
(Funktion \code{sum}, siehe Hilfe).
|
||||||
|
\begin{solution}
|
||||||
|
\code{sum(M(:, [2 4]), 1)}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Berechne die Summe aller Elemente der Matrize.
|
||||||
|
\begin{solution}
|
||||||
|
\code{sum(M(:))}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Ersetze die Elemente der 2. Zeile mit denen der 4.
|
||||||
|
\begin{solution}
|
||||||
|
\code{M(2,:) = M(4,:)}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part F\"uhre folgendes Kommando aus: \code{M(1:2,1) = [1, 2,
|
||||||
|
3]}. Was k\"onnte die Absicht dieses Codes gewesen sein? Was
|
||||||
|
bedeutet die Fehlermeldung?
|
||||||
|
\begin{solution}
|
||||||
|
\code{M(1:2,1) = [1, 2,3];\\ Subscripted assignment dimension
|
||||||
|
mismatch.} \\ Der einzuf\"ugende Vektor hat 3 Elemente, die
|
||||||
|
Auswahl von M in die geschrieben werden soll hat nur die
|
||||||
|
Gr\"o{\ss}e 2;
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Matrizen k\"onnen neben der ``normalen''
|
||||||
|
\textit{subscript} Indizierung auch \textit{linear} indiziert werden
|
||||||
|
(siehe Hilfe \"uber Indexing oder Funktionen \verb+sub2ind+ oder
|
||||||
|
\verb+ind2sub+).
|
||||||
|
\begin{parts}
|
||||||
|
\part Erstelle eine 2-D Matrix mit Zufallszahlen mit der Dimensionalit\"at
|
||||||
|
\verb+[10,10]+.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = randn(10, 10)}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Wie viele Werte enth\"alt sie?
|
||||||
|
\begin{solution}
|
||||||
|
\code{disp(numel(x))}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Benutze das lineare Indizieren um 50 zuf\"allige Werte
|
||||||
|
auszuw\"ahlen.
|
||||||
|
\begin{solution}
|
||||||
|
\code{x(randi(100, 50, 1)])}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part Wo liegt der Vorteil gegen\"uber der \textit{subscript}
|
||||||
|
Indizierung?
|
||||||
|
\begin{solution}
|
||||||
|
Die Matrize ist 2-dimensional. Wenn mit dem subscript index
|
||||||
|
zugegriffen werden soll, dann muss auf die Dimensionen
|
||||||
|
einzeln geachtet werden. Mit dem linearen Indexieren kann einfach
|
||||||
|
einen Vektor mit n Indices benutzt werden. Wenn es auch noch eine
|
||||||
|
eindeutige (ohne doppelte) Auswahl sein soll, dann muss bei
|
||||||
|
2-D viel komplexer kontrollieren.
|
||||||
|
\end{solution}
|
||||||
|
\part Berechne die Summe aller Werte mit einem Funktionsaufruf..
|
||||||
|
\begin{solution}
|
||||||
|
\code{sum(x(:))} oder \code{sum(sum(x))}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erstelle folgende Variablen \verb+x = [1 5 9]+ and
|
||||||
|
\verb+y = [7 1 5]+ und \verb+M = [3 1 6; 5 2 7]+. Welche der
|
||||||
|
folgenden Operationen funktionieren? Wenn nicht, warum funktionieren
|
||||||
|
sie nicht? Teste Deine Vorhersagen.
|
||||||
|
\begin{parts}
|
||||||
|
\part \code{x + y}
|
||||||
|
\begin{solution}
|
||||||
|
Funktioniert!
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part \code{x * M}
|
||||||
|
\begin{solution}
|
||||||
|
Matrixmultiplikation Funktioniert nicht! Inner dimensions must agree!
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part \code{x + y'}
|
||||||
|
\begin{solution}
|
||||||
|
Funktioniert nicht! Die Dimensionalit\"aten passen nicht.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part \code{M - [x y]}
|
||||||
|
\begin{solution}
|
||||||
|
Funktioniert nicht! \code{[x y] ist ein Zeilenvektor der L\"ange
|
||||||
|
6, M ist eine Martix.}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part \code{[x; y]}
|
||||||
|
\begin{solution}
|
||||||
|
Funktioniert! Gr\"o{\ss}e: 2 3
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\part \code{M - [x; y]}
|
||||||
|
\begin{solution}
|
||||||
|
Funktioniert!
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erstelle eine 3-D Matrix aus drei 2-D Matrizen. Benutze
|
||||||
|
die \verb+cat()+ Funktion f\"ur diesen Zweck (schaue in der Hilfe
|
||||||
|
nach, wie sie benutzt wird).
|
||||||
|
\begin{parts}
|
||||||
|
\part Gib alle Elemente des ersten ``Blattes'' aus (Index 1 der 3. Dimension).
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = randn(5,5); \\y = randn(5, 5);\\ z = cat(3, x, y);\\disp(z(:,:,1))}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
|
||||||
|
\question Erzeuge eine $5 \times 5 \times 5$ Matrix die mit
|
||||||
|
ganzzahligen, gleichverteilten Zufallszahlen zwischen 0 und 100
|
||||||
|
gef\"ullt ist.
|
||||||
|
\begin{parts}
|
||||||
|
\part Berechne den Mittelwert aller Bl\"atter dieser Matrix
|
||||||
|
(benutze \verb+mean()+, siehe Hilfe).
|
||||||
|
\begin{solution}
|
||||||
|
\code{x = round(rand(5,5,5) .* 100);\\ Disp(mean(mean(x(:,:,1))))\\ disp(mean(mean(x(:,:,2)))) \\ disp(mean(mean(x(:,:,3))))}
|
||||||
|
\end{solution}
|
||||||
|
\end{parts}
|
||||||
|
\end{questions}
|
||||||
|
|
||||||
|
\end{document}
|
@ -28,7 +28,11 @@
|
|||||||
\item Random-walk behutsam mit einer Schleife, dann zwei Schleifen. Plus Bildchen.
|
\item Random-walk behutsam mit einer Schleife, dann zwei Schleifen. Plus Bildchen.
|
||||||
\item Random-Walk with drift is model for decision making! See resoures/GoldShadlen2007 paper, Figure 2. Das wird auch in Systems Neurosciene \texttt{9 - Kognitive Kontrolle II.pdf} behandelt.
|
\item Random-Walk with drift is model for decision making! See resoures/GoldShadlen2007 paper, Figure 2. Das wird auch in Systems Neurosciene \texttt{9 - Kognitive Kontrolle II.pdf} behandelt.
|
||||||
\item Doppelte for-Schleife
|
\item Doppelte for-Schleife
|
||||||
\item File output and input (load, save, fprintf, scanf) (extra chapter?)
|
\item File handling: (extra chapter?)
|
||||||
|
\begin{itemize}
|
||||||
|
\item output and input (load, save, fprintf, scanf)
|
||||||
|
\item dir() function
|
||||||
|
\end{itemize}
|
||||||
\item help() und doc()
|
\item help() und doc()
|
||||||
\item A box about sampling of contiunous data.
|
\item A box about sampling of contiunous data.
|
||||||
\item A box about foo and bar?
|
\item A box about foo and bar?
|
||||||
|
@ -1009,6 +1009,60 @@ segment of data of a certain time span (the stimulus was on,
|
|||||||
\end{itemize}
|
\end{itemize}
|
||||||
\end{exercise}
|
\end{exercise}
|
||||||
|
|
||||||
|
\begin{ibox}[ht]{\label{whenscriptsbox}Advanced data types}
|
||||||
|
Thoughout this script and the exercises we will limit ourselves to
|
||||||
|
the basic data types introduced above (int, double, char, scalars,
|
||||||
|
vectors, matrices and strings). There are, however, \matlab{}-
|
||||||
|
specific advanced data structures that make life easier (mostly). We
|
||||||
|
will introduce them breifly here and refer to the \matlab{} help for
|
||||||
|
further information. \textbf{Note: Some of these data types are
|
||||||
|
more recent additions to the matlab language. One should consider
|
||||||
|
this if downward compatibility is desired/needed.}
|
||||||
|
|
||||||
|
\textbf{Structures} Arrays of named fields that each can contain
|
||||||
|
arbitrary data types. \codeterm{Structures} can have sub-structures
|
||||||
|
and thus can build a trees. Structures are often used to combine
|
||||||
|
data and mtadata in a single variable.
|
||||||
|
|
||||||
|
\textbf{Cell arrays} Arrays of variables that contain different
|
||||||
|
types. Unlike structures, the entries of a \codeterm{Cell array} are
|
||||||
|
not named. Indexing in \codeterm{Cell arrays} requires a special
|
||||||
|
operator the \code{\{\}}. \matlab{} uses \codeterm{Cell arrays} for
|
||||||
|
example when strings of different lengths should be stored in the
|
||||||
|
same variable: \varcode{months = \{'Januar', 'February', 'March',
|
||||||
|
'April', 'May', 'Jun'\};}. Note the curly braces that are used to
|
||||||
|
create the array and are also used for indexing.
|
||||||
|
|
||||||
|
\textbf{Tables} Tabular structure that allows to have columns of
|
||||||
|
varying type combined with a header (much like a spreadsheet).
|
||||||
|
|
||||||
|
\textbf{Timetables} Array of values that are associated with a
|
||||||
|
timestamp. For example one can store measurements, that are made in
|
||||||
|
irregular intervals togehter with the measurement time in a single
|
||||||
|
variable. Without the \codeterm{Timetable} data type at least two
|
||||||
|
variables (one storing the time, the other the measurement) would be
|
||||||
|
required. \codeterm{Timetables} offer specific convenience functions
|
||||||
|
to work with timestamps.
|
||||||
|
|
||||||
|
\textbf{Maps} In a \codeterm{map} a \codeterm{value} is associated
|
||||||
|
with an arbitrary \codeterm{key}. The \codeterm{key} is not
|
||||||
|
restricted to be an integer but can be almost anything. Maps are an
|
||||||
|
alternative to structures with the additional advantage that the key
|
||||||
|
can be used during indexing: \varcode{my\_map('key')}.
|
||||||
|
|
||||||
|
\textbf{Categorical arrays} are used to stored values that come from
|
||||||
|
a limited set of values, e.g. Months. Such categories can then be
|
||||||
|
used for filter operations. \codeterm{Categorical arrays} are often
|
||||||
|
used in conjunctions with \codeterm{Tables}.
|
||||||
|
\begin{lstlisting}[caption={Using Categorical arrays}, label=categoricallisting]
|
||||||
|
>> months = categorical({'Jan', 'Feb', 'Jan', 'Dec'});
|
||||||
|
>> events = [10, 2, 18, 20 ];
|
||||||
|
>> events(months == 'Jan')
|
||||||
|
ans =
|
||||||
|
10 18
|
||||||
|
\end{lstlisting}
|
||||||
|
|
||||||
|
\end{ibox}
|
||||||
|
|
||||||
\section{Control flow}\label{controlstructsec}
|
\section{Control flow}\label{controlstructsec}
|
||||||
|
|
||||||
|
@ -1,9 +1,15 @@
|
|||||||
all:
|
all: projects evalutation
|
||||||
for d in `ls -d project_*/`; do \
|
|
||||||
|
evaluation: evaluation.pdf
|
||||||
|
evaluation.pdf: evaluation.tex
|
||||||
|
pdflatex $<
|
||||||
|
|
||||||
|
projects:
|
||||||
|
for d in `ls -d project_*`; do \
|
||||||
|
if test "x$$d" != "xproject_template"; then \
|
||||||
echo "Processing $$d" ; \
|
echo "Processing $$d" ; \
|
||||||
a=$$(echo $$d*.tex) ; \
|
|
||||||
rm $${a%.tex}.zip ; \
|
|
||||||
cd $$d; $(MAKE) zip ; cd .. ; \
|
cd $$d; $(MAKE) zip ; cd .. ; \
|
||||||
|
fi \
|
||||||
done
|
done
|
||||||
|
|
||||||
mv project_*/*zip .
|
mv project_*/*zip .
|
||||||
@ -11,8 +17,10 @@ all:
|
|||||||
clean:
|
clean:
|
||||||
for d in `ls -d project_*/`; do \
|
for d in `ls -d project_*/`; do \
|
||||||
echo "Cleaning up $$d" ; \
|
echo "Cleaning up $$d" ; \
|
||||||
cd $$d; $(MAKE) clean ; cd .. ; \
|
$(MAKE) -C $$d clean ; \
|
||||||
done
|
done
|
||||||
|
|
||||||
|
rm -f *~
|
||||||
|
rm -f evaluation.aux evaluation.log
|
||||||
rm -f *.zip
|
rm -f *.zip
|
||||||
rm -rf auto
|
rm -rf auto
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
\fbox{\parbox{0.985\linewidth}{ \small
|
|
||||||
|
|
||||||
{\bf Evaluation criteria:}
|
|
||||||
|
|
||||||
Each project has three elements that are graded: (i) the code,
|
|
||||||
(ii) the slides/figures, and (iii) the presentation.
|
|
||||||
|
|
||||||
\vspace{1ex}
|
|
||||||
|
|
||||||
The {\bf code} and the {\bf presentation} should be uploaded to
|
|
||||||
ILIAS at latest on Thursday, February 9th, 12:59h. We will
|
|
||||||
store all presentations on one computer to allow fast
|
|
||||||
transitions between talks. The presentations start on Thursday,
|
|
||||||
February 9th at 1:00h c.t.. Please hand in your presentation as
|
|
||||||
a pdf file. Bundle everything (the pdf, the code, and the data)
|
|
||||||
into a {\em single} zip-file.
|
|
||||||
|
|
||||||
\vspace{1ex}
|
|
||||||
|
|
||||||
The {\bf code} should be executable without any further
|
|
||||||
adjustments from our side. A single \texttt{main.m} script should
|
|
||||||
coordinate the analysis by calling functions and sub-scripts and
|
|
||||||
should produce the {\em same} figures that you use in your
|
|
||||||
slides. The code should be properly commented and comprehensible
|
|
||||||
by a third person (use proper and consistent variable and
|
|
||||||
function names).
|
|
||||||
|
|
||||||
\vspace{1ex}
|
|
||||||
|
|
||||||
\textbf{Please write your name and matriculation number as a
|
|
||||||
comment at the top of the \texttt{main.m} script.}
|
|
||||||
|
|
||||||
\vspace{1ex}
|
|
||||||
|
|
||||||
The {\bf presentation} should be {\em at most} 10min long and be
|
|
||||||
held in English. In the presentation you should (i) briefly
|
|
||||||
describe the problem, (ii) present figures introducing, showing,
|
|
||||||
and discussing your results, and (iii) explain how you solved
|
|
||||||
the problem algorithmically (don't show your entire code). All
|
|
||||||
data-related figures you show in the presentation should be
|
|
||||||
produced by your program. It is always a good idea to illustrate
|
|
||||||
the problem with basic plots of the raw-data. Make sure the axis
|
|
||||||
labels are large enough!
|
|
||||||
}}
|
|
44
projects/evaluation.tex
Normal file
44
projects/evaluation.tex
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
\documentclass[12pt,a4paper]{article}
|
||||||
|
|
||||||
|
\usepackage[ngerman]{babel}
|
||||||
|
\usepackage{pslatex}
|
||||||
|
|
||||||
|
%%%%% page style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage[left=10mm,right=10mm,top=10mm,bottom=10mm,headsep=0ex,headheight=0ex,footskip=0ex]{geometry}
|
||||||
|
\pagestyle{empty}
|
||||||
|
|
||||||
|
\newcounter{studentnum}
|
||||||
|
\newcommand{\num}{\rule{0pt}{5.8ex}{\stepcounter{studentnum}\small \arabic{studentnum}}}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\sffamily
|
||||||
|
\section*{Scientific computing WS16/17}
|
||||||
|
|
||||||
|
\begin{tabular}{|p{0.15\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|p{0.07\textwidth}|}
|
||||||
|
\hline
|
||||||
|
Name & \multicolumn{5}{l|}{Code} & \multicolumn{3}{l|}{Functions} & Figures \\
|
||||||
|
& runs & docu & variable function script names & style & extras & NOT \newline used as scripts & docu & sep. \newline algo./ plot & saved \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\num & & & & & & & & & \\ \hline
|
||||||
|
\end{tabular}
|
||||||
|
|
||||||
|
\end{document}
|
56
projects/header.tex
Normal file
56
projects/header.tex
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
\usepackage{pslatex}
|
||||||
|
\usepackage[mediumspace,mediumqspace,squaren]{SIunits} % \ohm, \micro
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||||
|
|
||||||
|
%%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||||
|
\pagestyle{headandfoot}
|
||||||
|
\header{{\bfseries\large Scientific Computing}}{{\bfseries\large Project: \ptitle}}{{\bfseries\large Januar 24th, 2017}}
|
||||||
|
\runningfooter{}{\thepage}{}
|
||||||
|
|
||||||
|
\setlength{\baselineskip}{15pt}
|
||||||
|
\setlength{\parindent}{0.0cm}
|
||||||
|
\setlength{\parskip}{0.3cm}
|
||||||
|
\renewcommand{\baselinestretch}{1.15}
|
||||||
|
|
||||||
|
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage{listings}
|
||||||
|
\lstset{
|
||||||
|
language=Matlab,
|
||||||
|
basicstyle=\ttfamily\footnotesize,
|
||||||
|
numbers=left,
|
||||||
|
numberstyle=\tiny,
|
||||||
|
title=\lstname,
|
||||||
|
showstringspaces=false,
|
||||||
|
commentstyle=\itshape\color{darkgray},
|
||||||
|
breaklines=true,
|
||||||
|
breakautoindent=true,
|
||||||
|
columns=flexible,
|
||||||
|
frame=single,
|
||||||
|
xleftmargin=1em,
|
||||||
|
xrightmargin=1em,
|
||||||
|
aboveskip=10pt
|
||||||
|
}
|
||||||
|
|
||||||
|
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage{amsmath}
|
||||||
|
\usepackage{amssymb}
|
||||||
|
\usepackage{bm}
|
||||||
|
\usepackage{dsfont}
|
||||||
|
\newcommand{\naZ}{\mathds{N}}
|
||||||
|
\newcommand{\gaZ}{\mathds{Z}}
|
||||||
|
\newcommand{\raZ}{\mathds{Q}}
|
||||||
|
\newcommand{\reZ}{\mathds{R}}
|
||||||
|
\newcommand{\reZp}{\mathds{R^+}}
|
||||||
|
\newcommand{\reZpN}{\mathds{R^+_0}}
|
||||||
|
\newcommand{\koZ}{\mathds{C}}
|
||||||
|
|
||||||
|
%%%%% page breaks %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\newcommand{\continue}{\vfill\hspace*{\fill}$\rightarrow$\newpage}
|
||||||
|
|
||||||
|
%%%%% new commands %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\newcommand{\qt}[1]{\textbf{#1}\\}
|
||||||
|
\newcommand{\code}[1]{\texttt{#1}}
|
||||||
|
|
59
projects/instructions.tex
Normal file
59
projects/instructions.tex
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
\setlength{\fboxsep}{2ex}
|
||||||
|
\fbox{\parbox{1\linewidth}{\small
|
||||||
|
|
||||||
|
{\bf Evaluation criteria:}
|
||||||
|
|
||||||
|
Each project has three elements that are graded: (i) the code,
|
||||||
|
(ii) the slides/figures, and (iii) the presentation.
|
||||||
|
|
||||||
|
\vspace{1ex}
|
||||||
|
{\bf Dates:}
|
||||||
|
|
||||||
|
The {\bf code} and the {\bf presentation} should be uploaded to
|
||||||
|
ILIAS at latest on Thursday, February 9th, 12:59h. We will
|
||||||
|
store all presentations on one computer to allow fast
|
||||||
|
transitions between talks. The presentations start on Thursday,
|
||||||
|
February 9th at 1:00h c.t..
|
||||||
|
|
||||||
|
\vspace{1ex}
|
||||||
|
{\bf Files:}
|
||||||
|
|
||||||
|
Please hand in your presentation as a pdf file. Bundle
|
||||||
|
everything (the pdf, the code, and the data) into a {\em single}
|
||||||
|
zip-file.
|
||||||
|
|
||||||
|
\vspace{1ex}
|
||||||
|
{\bf Code:}
|
||||||
|
|
||||||
|
The {\bf code} should be executable without any further
|
||||||
|
adjustments from our side. A single \texttt{main.m} script
|
||||||
|
should coordinate the analysis by calling functions and
|
||||||
|
sub-scripts and should produce the {\em same} figures
|
||||||
|
(\texttt{saveas()}-function, pdf or png format) that you use in
|
||||||
|
your slides. The code should be properly commented and
|
||||||
|
comprehensible by a third person (use proper and consistent
|
||||||
|
variable and function names).
|
||||||
|
% Hint: make the zip file you want to upload, unpack it
|
||||||
|
% somewhere else and check if your main script is running.
|
||||||
|
|
||||||
|
\vspace{1ex}
|
||||||
|
|
||||||
|
\emph{Please write your name and matriculation number as a
|
||||||
|
comment at the top of the \texttt{main.m} script.}
|
||||||
|
|
||||||
|
|
||||||
|
\vspace{1ex}
|
||||||
|
{\bf Presentation:}
|
||||||
|
|
||||||
|
The {\bf presentation} should be {\em at most} 10min long and be
|
||||||
|
held in English. In the presentation you should (i) briefly
|
||||||
|
describe the problem, (ii) present figures introducing, showing,
|
||||||
|
and discussing your results, and (iii) explain how you solved
|
||||||
|
the problem algorithmically (don't show your entire code). All
|
||||||
|
data-related figures you show in the presentation should be
|
||||||
|
produced by your program --- no editing or labeling by
|
||||||
|
PowerPoint or other software. It is always a good idea to
|
||||||
|
illustrate the problem with basic plots of the raw-data. Make
|
||||||
|
sure the axis labels are large enough!
|
||||||
|
|
||||||
|
}}
|
25
projects/project.mk
Normal file
25
projects/project.mk
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
BASENAME=$(subst project_,,$(notdir $(CURDIR)))
|
||||||
|
|
||||||
|
latex:
|
||||||
|
pdflatex $(BASENAME).tex
|
||||||
|
pdflatex $(BASENAME).tex
|
||||||
|
|
||||||
|
|
||||||
|
pdf: $(BASENAME).pdf
|
||||||
|
|
||||||
|
$(BASENAME).pdf : $(BASENAME).tex ../header.tex ../instructions.tex
|
||||||
|
pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true
|
||||||
|
|
||||||
|
|
||||||
|
watch :
|
||||||
|
while true; do ! make -q pdf && make pdf; sleep 0.5; done
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f *~ code/*~ solution/*~ data/*~
|
||||||
|
rm -rf *.log *.aux *.out auto
|
||||||
|
rm -f `basename *.tex .tex`.pdf
|
||||||
|
rm -f *.zip
|
||||||
|
|
||||||
|
zip: latex
|
||||||
|
rm -f zip $(BASENAME).zip
|
||||||
|
zip $(BASENAME).zip *.pdf *.m data/* $(ZIPFILES)
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat data/*.mat
|
|
||||||
|
@ -1,32 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{WS 2016/17}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Grewe}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Adaptation time-constant}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Grewe}{phone: 29 74588}%
|
||||||
|
{email: jan.grewe@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section*{Estimating the adaptation time-constant.}
|
\section*{Estimating the adaptation time-constant.}
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf data/*.mat
|
|
||||||
|
@ -1,32 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{WS 2016/17}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Grewe}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{EOD waveform}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Grewe}{phone: 29 74588}%
|
||||||
|
{email: jan.grewe@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
80
projects/project_eod/solution/fit_eod.py
Normal file
80
projects/project_eod/solution/fit_eod.py
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import numpy as np
|
||||||
|
from IPython import embed
|
||||||
|
import scipy.io as scio
|
||||||
|
|
||||||
|
def load_data(filename):
|
||||||
|
data = scio.loadmat(filename)
|
||||||
|
t = data['t']
|
||||||
|
eod = data['eod']
|
||||||
|
return t[0], eod[0]
|
||||||
|
|
||||||
|
|
||||||
|
def eod_model(p, t):
|
||||||
|
b_0 = p[0]
|
||||||
|
omega_0 = p[1]
|
||||||
|
|
||||||
|
params = p[2:]
|
||||||
|
n = len(params)/2
|
||||||
|
eod = np.zeros(t.shape)
|
||||||
|
for i in range(n):
|
||||||
|
eod += params[i*2] * np.sin(2 * np.pi * t * (i+1) * omega_0 + params[i*2+1])
|
||||||
|
eod += b_0
|
||||||
|
return eod
|
||||||
|
|
||||||
|
|
||||||
|
def fit_error(p, t, y):
|
||||||
|
y_dash = eod_model(p,t)
|
||||||
|
err = np.mean((y - y_dash)**2)
|
||||||
|
return err
|
||||||
|
|
||||||
|
|
||||||
|
def gradient(p, t, y, scale=None):
|
||||||
|
if scale is None:
|
||||||
|
scale = np.ones(len(p))
|
||||||
|
grad = np.zeros(len(p))
|
||||||
|
h = 0.002
|
||||||
|
for i in range(len(p)):
|
||||||
|
p_temp = list(p)
|
||||||
|
p_temp[i] = p[i] + scale[i] * h
|
||||||
|
grad[i] = (fit_error(p_temp, t, y) - fit_error(p, t, y)) / h
|
||||||
|
return grad
|
||||||
|
|
||||||
|
|
||||||
|
def gradient_descent(t, y):
|
||||||
|
count = 80
|
||||||
|
b_0 = np.mean(y)
|
||||||
|
omega_0 = 650
|
||||||
|
params = [b_0, omega_0, np.min(y) + np.max(y), np.pi/2, (np.min(y) + np.max(y))/2, np.pi/3, (np.min(y) + np.max(y))/4, np.pi/4, (np.min(y) + np.max(y))/5, np.pi]
|
||||||
|
scale = np.ones(len(params))
|
||||||
|
scale[1] = 1000
|
||||||
|
eps = 0.01
|
||||||
|
grad = None
|
||||||
|
errors = []
|
||||||
|
plt.axis([0, t[count], -3, 3.5])
|
||||||
|
plt.ion()
|
||||||
|
plt.plot(t[:count], y[:count])
|
||||||
|
l = None
|
||||||
|
while (grad is None) or (np.linalg.norm(grad) > 0.01):
|
||||||
|
errors.append(fit_error(params, t[:count], y[:count]))
|
||||||
|
|
||||||
|
grad = gradient(params, t[:count], y[:count])
|
||||||
|
params -= eps * scale * grad
|
||||||
|
if l is None:
|
||||||
|
l = plt.plot(t[:count], eod_model(params, t[:count]))
|
||||||
|
else:
|
||||||
|
l[0].set_data(t[:count], eod_model(params, t[:count]))
|
||||||
|
plt.title("norm: %.2f, freq: %.2f" % (np.linalg.norm(grad), params[1]))
|
||||||
|
plt.pause(0.005)
|
||||||
|
embed()
|
||||||
|
exit()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
datafile = '../data/EOD_data.mat'
|
||||||
|
t, eod = load_data(datafile)
|
||||||
|
# eod = eod_model([0.0, 600, 1.0, 0.0], t[:100])
|
||||||
|
gradient_descent(t, eod)
|
||||||
|
embed()
|
||||||
|
exit()
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf data/*.mat
|
|
||||||
|
@ -1,32 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{WS 2016/17}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Grewe}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Eye tracker}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Grewe}{phone: 29 74588}%
|
||||||
|
{email: jan.grewe@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section*{Analysis of eye trajectories.}
|
\section*{Analysis of eye trajectories.}
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m
|
|
||||||
|
@ -1,52 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/02/2014
|
|
||||||
-- 11/05/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Benda}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\usepackage{listings}
|
|
||||||
\lstset{
|
|
||||||
basicstyle=\ttfamily,
|
|
||||||
numbers=left,
|
|
||||||
showstringspaces=false,
|
|
||||||
language=Matlab,
|
|
||||||
breaklines=true,
|
|
||||||
breakautoindent=true,
|
|
||||||
columns=flexible,
|
|
||||||
frame=single,
|
|
||||||
% captionpos=t,
|
|
||||||
xleftmargin=2em,
|
|
||||||
xrightmargin=1em,
|
|
||||||
% aboveskip=11pt,
|
|
||||||
%title=\lstname,
|
|
||||||
% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Stimulus discrimination}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
\input{../instructions.tex}
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ function spikes = lifboltzmannspikes(trials, input, tmax, gain)
|
|||||||
for k=1:trials
|
for k=1:trials
|
||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
v = vreset;
|
v = vreset + (vthresh - vreset) * rand();
|
||||||
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
||||||
for i=1:n
|
for i=1:n
|
||||||
v = v + (- v + noise(i) + inb)*dt/tau;
|
v = v + (- v + noise(i) + inb)*dt/tau;
|
||||||
|
@ -76,7 +76,8 @@ plot(false2s, true1s);
|
|||||||
T = 0.1;
|
T = 0.1;
|
||||||
gains = 0.01:0.01:1.0;
|
gains = 0.01:0.01:1.0;
|
||||||
cmax = 100;
|
cmax = 100;
|
||||||
ds = zeros(length(gains), 1);
|
dstt = zeros(length(gains), 1);
|
||||||
|
dsff = zeros(length(gains), 1);
|
||||||
for k = 1:length(gains)
|
for k = 1:length(gains)
|
||||||
gain = gains(k);
|
gain = gains(k);
|
||||||
spikes1 = lifboltzmannspikes(trials, I1, tmax, gain);
|
spikes1 = lifboltzmannspikes(trials, I1, tmax, gain);
|
||||||
@ -84,9 +85,11 @@ for k = 1:length(gains)
|
|||||||
[c1, b1] = counthist(spikes1, 0.0, tmax, T, cmax);
|
[c1, b1] = counthist(spikes1, 0.0, tmax, T, cmax);
|
||||||
[c2, b2] = counthist(spikes2, 0.0, tmax, T, cmax);
|
[c2, b2] = counthist(spikes2, 0.0, tmax, T, cmax);
|
||||||
[d, thresholds, true1s, false1s, true2s, false2s, pratio] = discriminability(spikes1, spikes2, tmax, T, cmax);
|
[d, thresholds, true1s, false1s, true2s, false2s, pratio] = discriminability(spikes1, spikes2, tmax, T, cmax);
|
||||||
ds(k) = d;
|
dstt(k) = d;
|
||||||
|
dsff(k) = min(false1s + false2s);
|
||||||
end
|
end
|
||||||
figure()
|
figure()
|
||||||
plot(gains, ds)
|
plot(gains, dstt);
|
||||||
|
hold on;
|
||||||
|
plot(gains, dsff);
|
||||||
|
hold off;
|
||||||
|
@ -20,7 +20,7 @@ function spikes = lifboltzmannspikes(trials, input, tmax, gain)
|
|||||||
for k=1:trials
|
for k=1:trials
|
||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
v = vreset;
|
v = vreset + (vthresh - vreset) * rand();
|
||||||
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
||||||
for i=1:n
|
for i=1:n
|
||||||
v = v + (- v + noise(i) + inb)*dt/tau;
|
v = v + (- v + noise(i) + inb)*dt/tau;
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat
|
|
||||||
|
@ -1,37 +1,16 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014
|
|
||||||
-- 11/06/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Fabian Sinz}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Fano factor test}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\begin{questions}
|
\begin{questions}
|
||||||
\question The Fano factor $F=\frac{\sigma^2}{\mu}$ relates the
|
\question The Fano factor $F=\frac{\sigma^2}{\mu}$ relates the
|
||||||
variance of a spike count $\sigma^2$ to the mean spike count
|
variance of a spike count $\sigma^2$ to the mean spike count
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m
|
|
||||||
|
@ -1,52 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/02/2014
|
|
||||||
-- 11/05/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Benda}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\usepackage{listings}
|
|
||||||
\lstset{
|
|
||||||
basicstyle=\ttfamily,
|
|
||||||
numbers=left,
|
|
||||||
showstringspaces=false,
|
|
||||||
language=Matlab,
|
|
||||||
breaklines=true,
|
|
||||||
breakautoindent=true,
|
|
||||||
columns=flexible,
|
|
||||||
frame=single,
|
|
||||||
% captionpos=t,
|
|
||||||
xleftmargin=2em,
|
|
||||||
xrightmargin=1em,
|
|
||||||
% aboveskip=11pt,
|
|
||||||
%title=\lstname,
|
|
||||||
% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Stimulus discrimination}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
\input{../instructions.tex}
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ function spikes = lifspikes(trials, input, tmax)
|
|||||||
for k=1:trials
|
for k=1:trials
|
||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
v = vreset + (vthresh-vreset)*rand(1);
|
v = vreset + (vthresh-vreset)*rand();
|
||||||
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
||||||
for i=1:length(noise)
|
for i=1:length(noise)
|
||||||
v = v + (- v + noise(i) + input)*dt/tau;
|
v = v + (- v + noise(i) + input)*dt/tau;
|
||||||
|
@ -19,7 +19,7 @@ function spikes = lifspikes(trials, input, tmax)
|
|||||||
for k=1:trials
|
for k=1:trials
|
||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
v = vreset + (vthresh-vreset)*rand(1);
|
v = vreset + (vthresh-vreset)*rand();
|
||||||
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
||||||
for i=1:length(noise)
|
for i=1:length(noise)
|
||||||
v = v + (- v + noise(i) + input)*dt/tau;
|
v = v + (- v + noise(i) + input)*dt/tau;
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf data/*.mat
|
|
||||||
|
@ -1,32 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{WS 2016/17}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Grewe}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Cellular properties}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Grewe}{phone: 29 74588}%
|
||||||
|
{email: jan.grewe@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section*{Estimating cellular properties of different cell types.}
|
\section*{Estimating cellular properties of different cell types.}
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m
|
|
||||||
|
@ -1,55 +1,16 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014
|
|
||||||
-- 11/06/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Benda}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\usepackage{listings}
|
|
||||||
\lstset{
|
|
||||||
basicstyle=\ttfamily,
|
|
||||||
numbers=left,
|
|
||||||
showstringspaces=false,
|
|
||||||
language=Matlab,
|
|
||||||
breaklines=true,
|
|
||||||
breakautoindent=true,
|
|
||||||
columns=flexible,
|
|
||||||
frame=single,
|
|
||||||
% captionpos=t,
|
|
||||||
xleftmargin=2em,
|
|
||||||
xrightmargin=1em,
|
|
||||||
% aboveskip=11pt,
|
|
||||||
%title=\lstname,
|
|
||||||
% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Interspike-intervall correlations}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\begin{questions}
|
\begin{questions}
|
||||||
\question You are recording the activity of a neuron in response to
|
\question You are recording the activity of a neuron in response to
|
||||||
constant stimuli of intensity $I$ (think of that, for example,
|
constant stimuli of intensity $I$ (think of that, for example,
|
||||||
|
@ -32,7 +32,7 @@ function spikes = lifadaptspikes( trials, input, tmaxdt, D, tauadapt, adaptincr
|
|||||||
for k=1:trials
|
for k=1:trials
|
||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
v = vreset;
|
v = vreset + (vthresh-vreset)*rand();
|
||||||
a = 0.0;
|
a = 0.0;
|
||||||
noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt);
|
noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt);
|
||||||
for i=1:length( noise )
|
for i=1:length( noise )
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m
|
|
||||||
|
@ -1,52 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/02/2014
|
|
||||||
-- 11/05/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Benda}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\usepackage{listings}
|
|
||||||
\lstset{
|
|
||||||
basicstyle=\ttfamily,
|
|
||||||
numbers=left,
|
|
||||||
showstringspaces=false,
|
|
||||||
language=Matlab,
|
|
||||||
breaklines=true,
|
|
||||||
breakautoindent=true,
|
|
||||||
columns=flexible,
|
|
||||||
frame=single,
|
|
||||||
% captionpos=t,
|
|
||||||
xleftmargin=2em,
|
|
||||||
xrightmargin=1em,
|
|
||||||
% aboveskip=11pt,
|
|
||||||
%title=\lstname,
|
|
||||||
% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{ISI distributions}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
\input{../instructions.tex}
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ function spikes = lifouspikes( trials, input, tmaxdt, D, outau )
|
|||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
n = 0.0;
|
n = 0.0;
|
||||||
v = vreset;
|
v = vreset + (vthresh-vreset)*rand();
|
||||||
noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt);
|
noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt);
|
||||||
for i=1:length( noise )
|
for i=1:length( noise )
|
||||||
n = n + ( - n + noise(i))*dt/outau;
|
n = n + ( - n + noise(i))*dt/outau;
|
||||||
|
@ -28,7 +28,7 @@ function spikes = pifouspikes( trials, input, tmaxdt, D, outau )
|
|||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
n = 0.0;
|
n = 0.0;
|
||||||
v = vreset;
|
v = vreset + (vthresh-vreset)*rand();
|
||||||
noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt);
|
noise = sqrt(2.0*D)*randn( length( input ), 1 )/sqrt(dt);
|
||||||
for i=1:length( noise )
|
for i=1:length( noise )
|
||||||
n = n + ( - n + noise(i))*dt/outau;
|
n = n + ( - n + noise(i))*dt/outau;
|
||||||
|
11
projects/project_isipdffit/solution/invgauss.m
Normal file
11
projects/project_isipdffit/solution/invgauss.m
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
function p = invgauss(x, mu, D)
|
||||||
|
if abs(x) < 1e-8
|
||||||
|
p = zeros(size(x))
|
||||||
|
else
|
||||||
|
if x < 0
|
||||||
|
x = -x;
|
||||||
|
end
|
||||||
|
p = exp(-(x-mu).^2./4.0./D./x./mu./mu)./sqrt(4.*pi.*D.*x.^3.0);
|
||||||
|
end
|
||||||
|
p(p<1e-16) = 1e-16;
|
||||||
|
end
|
72
projects/project_isipdffit/solution/isipdffit.m
Normal file
72
projects/project_isipdffit/solution/isipdffit.m
Normal file
@ -0,0 +1,72 @@
|
|||||||
|
%% check Pig implementation:
|
||||||
|
mu = 0.01;
|
||||||
|
D = 1.0;
|
||||||
|
dx=0.0001;
|
||||||
|
x = dx:dx:10.0;
|
||||||
|
|
||||||
|
for D = [0.1 1 10 100]
|
||||||
|
for mu = [0.01 0.03 0.1 .03]
|
||||||
|
%pig = exp(-(x-mu).^2/4.0/D./x./mu/mu)./sqrt(4*pi*D*x.^3.0);
|
||||||
|
pig = invgauss(x,mu,D);
|
||||||
|
P = sum(pig)*dx;
|
||||||
|
mig = sum(x.*pig)*dx;
|
||||||
|
qig = sum(x.*x.*pig)*dx;
|
||||||
|
vig = qig - mig*mig;
|
||||||
|
dig = 0.5*vig/mig^3;
|
||||||
|
fprintf('Integral=%.3f\n', P);
|
||||||
|
fprintf('Average=%.3f = %.3f\n', mig, mu);
|
||||||
|
%fprintf('Variance=%.3f\n', vig);
|
||||||
|
fprintf('Diffusion=%.3f = %.3f\n\n', dig, D);
|
||||||
|
|
||||||
|
plot(x, pig)
|
||||||
|
hold on
|
||||||
|
plot([mu mu], [0 max(pig)], 'k')
|
||||||
|
hold off
|
||||||
|
xmax = 3.0*mu;
|
||||||
|
if xmax < 0.1
|
||||||
|
xmax = 0.1;
|
||||||
|
end
|
||||||
|
xlim([0 xmax])
|
||||||
|
text(0.6, 0.8, sprintf('D=%.3g', D), 'units', 'normalized')
|
||||||
|
pause( 1.0 )
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
%% fit to data:
|
||||||
|
trials = 1;
|
||||||
|
tmax = 100.0;
|
||||||
|
input = 10.0; % the input I
|
||||||
|
Dnoise = 1.0; % noise strength
|
||||||
|
outau = 0.1; % correlation time of the noise in seconds
|
||||||
|
%for input = [9.5 10.1 11.7 15.9]
|
||||||
|
% spikes = lifouspikes(trials, input, tmax, Dnoise, outau);
|
||||||
|
for input = [1.0 2.0 5.0 10.0]
|
||||||
|
spikes = pifouspikes(trials, input, tmax, Dnoise, outau);
|
||||||
|
isis = diff(spikes{1});
|
||||||
|
mu = mean(isis);
|
||||||
|
fprintf('mean firing rate = %.0f Hz\n', 1.0/mu)
|
||||||
|
v = var(isis);
|
||||||
|
D = 0.5*v/mu^3;
|
||||||
|
[h,b] = hist(isis, 0:0.001:1);
|
||||||
|
h = h/sum(h)/(b(2)-b(1));
|
||||||
|
bar(b, h);
|
||||||
|
hold on;
|
||||||
|
dx=0.0001;
|
||||||
|
x = dx:dx:max(isis);
|
||||||
|
pig = exp(-(x-mu).^2/4.0/D./x./mu/mu)./sqrt(4*pi*D*x.^3.0);
|
||||||
|
plot(x, pig, 'r', 'linewidth', 2);
|
||||||
|
% mle fit:
|
||||||
|
phat = mle(isis, 'pdf', @invgauss, 'start', [0.1 0.1] );
|
||||||
|
mu = phat(1);
|
||||||
|
D = phat(2);
|
||||||
|
pig = exp(-(x-mu).^2/4.0/D./x./mu/mu)./sqrt(4*pi*D*x.^3.0);
|
||||||
|
plot(x, pig, 'c', 'linewidth', 2);
|
||||||
|
xlim([0 4.0*mu])
|
||||||
|
hold off;
|
||||||
|
pause( 4.0 )
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m
|
|
||||||
|
@ -1,53 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014
|
|
||||||
-- 11/06/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\usepackage{listings}
|
|
||||||
\lstset{
|
|
||||||
basicstyle=\ttfamily,
|
|
||||||
numbers=left,
|
|
||||||
showstringspaces=false,
|
|
||||||
language=Matlab,
|
|
||||||
breaklines=true,
|
|
||||||
breakautoindent=true,
|
|
||||||
columns=flexible,
|
|
||||||
frame=single,
|
|
||||||
% captionpos=t,
|
|
||||||
xleftmargin=2em,
|
|
||||||
xrightmargin=1em,
|
|
||||||
% aboveskip=11pt,
|
|
||||||
%title=\lstname,
|
|
||||||
% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Integrate-and-fire neuron}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
@ -89,6 +50,9 @@ time = [0.0:dt:tmax]; % t_i
|
|||||||
and compute $V(t)$ for $t_{max}=50$\,ms. Plot $V(t)$ and compare it to
|
and compute $V(t)$ for $t_{max}=50$\,ms. Plot $V(t)$ and compare it to
|
||||||
the expected result of $V(t) = \exp(-t/\tau)$.
|
the expected result of $V(t) = \exp(-t/\tau)$.
|
||||||
|
|
||||||
|
Vary the time step $\Delta t$ by factors of 10 and discuss
|
||||||
|
accuracy of numerical solutions. What is a good time step?
|
||||||
|
|
||||||
Why is $V=0$ the resting potential of this neuron?
|
Why is $V=0$ the resting potential of this neuron?
|
||||||
|
|
||||||
\part Response of the passive membrane to a step input.
|
\part Response of the passive membrane to a step input.
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat
|
|
||||||
|
@ -1,36 +1,16 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/02/2014
|
|
||||||
-- 11/05/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Benda}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Mutual information}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\begin{questions}
|
\begin{questions}
|
||||||
\question A subject was presented two possible objects for a very
|
\question A subject was presented two possible objects for a very
|
||||||
brief time ($50$\,ms). The task of the subject was to report which of
|
brief time ($50$\,ms). The task of the subject was to report which of
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m
|
|
||||||
|
@ -18,7 +18,7 @@ function spikes = lifspikes(trials, input, tmax, D)
|
|||||||
for k=1:trials
|
for k=1:trials
|
||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
v = vreset;
|
v = vreset + (vthresh-vreset)*rand();
|
||||||
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
||||||
for i=1:n
|
for i=1:n
|
||||||
v = v + (- v + noise(i) + input)*dt/tau;
|
v = v + (- v + noise(i) + input)*dt/tau;
|
||||||
|
@ -1,55 +1,17 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/02/2014
|
|
||||||
-- 11/05/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Benda}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\usepackage{listings}
|
|
||||||
\lstset{
|
|
||||||
basicstyle=\ttfamily,
|
|
||||||
numbers=left,
|
|
||||||
showstringspaces=false,
|
|
||||||
language=Matlab,
|
|
||||||
breaklines=true,
|
|
||||||
breakautoindent=true,
|
|
||||||
columns=flexible,
|
|
||||||
frame=single,
|
|
||||||
% captionpos=t,
|
|
||||||
xleftmargin=2em,
|
|
||||||
xrightmargin=1em,
|
|
||||||
% aboveskip=11pt,
|
|
||||||
%title=\lstname,
|
|
||||||
% title={\protect\filename@parse{\lstname}\protect\filename@base.\protect\filename@ext}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Neural tuning and noise}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
|
|
||||||
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{REPLACE BY SUBTHRESHOLD RESONANCE PROJECT!}
|
||||||
\begin{questions}
|
\begin{questions}
|
||||||
\question You are recording the activity of a neuron in response to
|
\question You are recording the activity of a neuron in response to
|
||||||
constant stimuli of intensity $I$ (think of that, for example,
|
constant stimuli of intensity $I$ (think of that, for example,
|
||||||
|
@ -18,7 +18,7 @@ function spikes = lifspikes(trials, input, tmax, D)
|
|||||||
for k=1:trials
|
for k=1:trials
|
||||||
times = [];
|
times = [];
|
||||||
j = 1;
|
j = 1;
|
||||||
v = vreset;
|
v = vreset + (vthresh-vreset)*rand();
|
||||||
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
noise = sqrt(2.0*D)*randn(n, 1)/sqrt(dt);
|
||||||
for i=1:n
|
for i=1:n
|
||||||
v = v + (- v + noise(i) + input)*dt/tau;
|
v = v + (- v + noise(i) + input)*dt/tau;
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat data/*.mat
|
|
||||||
|
@ -1,32 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
\newcommand{\ptitle}{Number coding}
|
||||||
\runningheadrule
|
\input{../header.tex}
|
||||||
\firstpageheadrule
|
\firstpagefooter{Supervisor: Jan Grewe}{phone: 29 74588}%
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{WS 2016/17}
|
{email: jan.grewe@uni-tuebingen.de}
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Grewe}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
\begin{document}
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\input{../instructions.tex}
|
||||||
|
|
||||||
\begin{document}
|
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat data/*.mat
|
|
||||||
|
@ -1,32 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{WS 2016/17}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Grewe}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Onset f-I curve}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Grewe}{phone: 29 74588}%
|
||||||
|
{email: jan.grewe@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section*{Quantifying the responsiveness of a neuron using the F-I curve.}
|
\section*{Quantifying the responsiveness of a neuron using the F-I curve.}
|
||||||
|
3
projects/project_pca_natural_images/Makefile
Normal file
3
projects/project_pca_natural_images/Makefile
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
ZIPFILES=
|
||||||
|
|
||||||
|
include ../project.mk
|
Before Width: | Height: | Size: 915 KiB After Width: | Height: | Size: 915 KiB |
35
projects/project_pca_natural_img/pca_natural_images.tex → projects/project_pca_natural_images/pca_natural_images.tex
Executable file → Normal file
35
projects/project_pca_natural_img/pca_natural_images.tex → projects/project_pca_natural_images/pca_natural_images.tex
Executable file → Normal file
@ -1,33 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{11/05/2014
|
|
||||||
-- 11/06/2014}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Fabian Sinz}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Image statistics}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Benda}{phone: 29 74573}%
|
||||||
|
{email: jan.benda@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
\input{../instructions.tex}
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
@ -1,11 +0,0 @@
|
|||||||
latex:
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -rf *.log *.aux *.zip *.out auto *.bbl *.blg
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.jpg
|
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat data/*.mat
|
|
||||||
|
@ -1,32 +1,14 @@
|
|||||||
\documentclass[addpoints,11pt]{exam}
|
\documentclass[a4paper,12pt,pdftex]{exam}
|
||||||
\usepackage{url}
|
|
||||||
\usepackage{color}
|
|
||||||
\usepackage{hyperref}
|
|
||||||
|
|
||||||
\pagestyle{headandfoot}
|
|
||||||
\runningheadrule
|
|
||||||
\firstpageheadrule
|
|
||||||
\firstpageheader{Scientific Computing}{Project Assignment}{WS 2016/17}
|
|
||||||
%\runningheader{Homework 01}{Page \thepage\ of \numpages}{23. October 2014}
|
|
||||||
\firstpagefooter{}{}{{\bf Supervisor:} Jan Grewe}
|
|
||||||
\runningfooter{}{}{}
|
|
||||||
\pointsinmargin
|
|
||||||
\bracketedpoints
|
|
||||||
|
|
||||||
%\printanswers
|
|
||||||
%\shadedsolutions
|
|
||||||
|
|
||||||
|
\newcommand{\ptitle}{Photoreceptor activity}
|
||||||
|
\input{../header.tex}
|
||||||
|
\firstpagefooter{Supervisor: Jan Grewe}{phone: 29 74588}%
|
||||||
|
{email: jan.grewe@uni-tuebingen.de}
|
||||||
|
|
||||||
\begin{document}
|
\begin{document}
|
||||||
%%%%%%%%%%%%%%%%%%%%% Submission instructions %%%%%%%%%%%%%%%%%%%%%%%%%
|
|
||||||
\sffamily
|
|
||||||
% \begin{flushright}
|
|
||||||
% \gradetable[h][questions]
|
|
||||||
% \end{flushright}
|
|
||||||
|
|
||||||
\begin{center}
|
\input{../instructions.tex}
|
||||||
\input{../disclaimer.tex}
|
|
||||||
\end{center}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%% Questions %%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section*{Analysis of insect photoreceptor data.}
|
\section*{Analysis of insect photoreceptor data.}
|
||||||
|
@ -1,10 +1,3 @@
|
|||||||
latex:
|
ZIPFILES=
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
pdflatex *.tex > /dev/null
|
|
||||||
|
|
||||||
clean:
|
include ../project.mk
|
||||||
rm -rf *.log *.aux *.zip *.out auto
|
|
||||||
rm -f `basename *.tex .tex`.pdf
|
|
||||||
|
|
||||||
zip: latex
|
|
||||||
zip `basename *.tex .tex`.zip *.pdf *.dat *.mat *.m
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user