Merge branch 'master' of whale.am28.uni-tuebingen.de:scientificComputing
This commit is contained in:
commit
ad33012da7
@ -439,11 +439,11 @@ that help to solve the problem.
|
||||
steps for correctness.
|
||||
\item Call for help and explain the program to someone else. When you
|
||||
do this, start at the beginning and walk through the program line by
|
||||
line. Often it is not necessary that the other person is a
|
||||
programmer or exactly understands what is going on. Often, it is the
|
||||
line. Often, it is not necessary that the other person is a
|
||||
programmer or exactly understands what is going on. Rather, it is the
|
||||
own reflection on the problem and the chosen approach that helps
|
||||
finding the bug. (This strategy is also known as \codeterm{Rubber
|
||||
duck debugging}.
|
||||
finding the bug (This strategy is also known as \codeterm{Rubber
|
||||
duck debugging}).
|
||||
\end{enumerate}
|
||||
|
||||
|
||||
@ -492,15 +492,16 @@ The toolbar of the editor offers now a new set of tools for debugging:
|
||||
\item \textbf{Step} --- Execute the next command and stop.
|
||||
\item \textbf{Step in} --- If the next command is a
|
||||
function call, step into it and stop at the first command.
|
||||
\item \textbf{Step out} --- If the next command is a function call,
|
||||
proceed until the called function returns, then stop.
|
||||
\item \textbf{Step out} --- Suppose you entered a function with
|
||||
\emph{step in}. \emph{Step out} will continue with the execution and
|
||||
stop once you are back in the calling function.
|
||||
\item \textbf{Run to cursor} --- Execute all statements up to the
|
||||
current cursor position.
|
||||
\item \textbf{Quit debugging} --- Immediately stop the debugging
|
||||
session and stop the further code execution.
|
||||
session and stop further code execution.
|
||||
\end{enumerate}
|
||||
|
||||
The debugger offers some more (advanced) features but the
|
||||
functionality offered by the basic tools is often enough to debug a program.
|
||||
|
||||
functionality offered by the basic tools is often enough to debug a
|
||||
program.
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\chapter{Design patterns}
|
||||
\chapter{Design pattern}
|
||||
|
||||
Many code fragments are variations of some basic patterns. These
|
||||
patterns are used in many different variations in many different
|
||||
Many code fragments are variations of some basic pattern. These
|
||||
pattern are used in many different variations in many different
|
||||
contexts. In this chapter we summarize a few of these \enterm[design
|
||||
pattern]{design patterns}.
|
||||
pattern]{design pattern}.
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Looping over vector elements}
|
||||
|
@ -133,7 +133,7 @@ Log-Likelihood
|
||||
\begin{eqnarray*}
|
||||
\log {\cal L}(\theta|(x_1,y_1,\sigma_1), \ldots, (x_n,y_n,\sigma_n))
|
||||
& = & \sum_{i=1}^n \log \frac{1}{\sqrt{2\pi \sigma_i^2}}e^{-\frac{(y_i-f(x_i;\theta))^2}{2\sigma_i^2}} \\
|
||||
& = & \sum_{i=1}^n - \log \sqrt{2\pi \sigma_i^2} -\frac{(x_i-f(y_i;\theta))^2}{2\sigma_i^2} \\
|
||||
& = & \sum_{i=1}^n - \log \sqrt{2\pi \sigma_i^2} -\frac{(y_i-f(x_i;\theta))^2}{2\sigma_i^2} \\
|
||||
\end{eqnarray*}
|
||||
Der einzige Unterschied zum vorherigen Beispiel ist, dass die
|
||||
Mittelwerte der Normalverteilungen nun durch die Funktionswerte
|
||||
|
54
plotting/code/movie_example.m
Normal file
54
plotting/code/movie_example.m
Normal file
@ -0,0 +1,54 @@
|
||||
clear all
|
||||
close all
|
||||
max_frames = 500;
|
||||
|
||||
f_x = 1;
|
||||
f_y = 1.5;
|
||||
dt = 2*pi/500;
|
||||
|
||||
f = figure();
|
||||
set(f, 'visible', 'off');
|
||||
set(f, 'PaperUnits', 'centimeter', 'PaperSize', [2.5, 2.5], ...
|
||||
'PaperPosition', [0, 0, 2.5, 2.5], 'Color', 'white')
|
||||
|
||||
writer = VideoWriter('../lecture/images/lissajous.mp4', 'MPEG-4');
|
||||
writer.FrameRate = 25;
|
||||
writer.Quality = 50;
|
||||
|
||||
open(writer);
|
||||
for i = 1:max_frames
|
||||
x = sin(f_x * 2 * pi * dt * i);
|
||||
y = sin(f_y * 2 * pi * dt * i);
|
||||
scatter(x, y, 30, 'r', 'filled');
|
||||
xlim([-1.05, 1.05])
|
||||
xticks([-1., 0., 1.])
|
||||
ylim([-1.05, 1.05])
|
||||
yticks([-1., 0., 1.])
|
||||
xlabel('x')
|
||||
ylabel('y')
|
||||
drawnow;
|
||||
frame = getframe(f);
|
||||
writeVideo(writer, frame);
|
||||
end
|
||||
close(writer)
|
||||
|
||||
x_positions = zeros(max_frames, 1);
|
||||
y_positions = zeros(max_frames, 1);
|
||||
for i = 1:max_frames
|
||||
x_positions(i) = sin(f_x * 2 * pi * dt * i);
|
||||
y_positions(i) = sin(f_y * 2 * pi * dt * i);
|
||||
end
|
||||
|
||||
f = figure();
|
||||
set(f, 'PaperUnits', 'centimeter', 'PaperSize', [5, 5], ...
|
||||
'PaperPosition', [0, 0, 5, 5], 'Color', 'white')
|
||||
|
||||
scatter(x_positions, y_positions, 10, 'r', 'filled');
|
||||
xlim([-1.05, 1.05])
|
||||
xticks([-1., 0., 1.])
|
||||
ylim([-1.05, 1.05])
|
||||
yticks([-1., 0., 1.])
|
||||
xlabel('x')
|
||||
ylabel('y')
|
||||
|
||||
saveas(f, '../lecture/images/lissajous.png')
|
52
plotting/code/scaling.py
Normal file
52
plotting/code/scaling.py
Normal file
@ -0,0 +1,52 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import scipy.stats as spst
|
||||
|
||||
y_data = np.arange(89., 99., 1.) + np.random.randn(10) * 3.;
|
||||
x_labels = ['10.18', '11.18', '12.18', '01.19', '02.19',
|
||||
'03.19', '04.19','05.19','06.19','07.19']
|
||||
x_data = np.arange(len(x_labels))
|
||||
slope, intercept, _, _, _ = spst.linregress(x_data, y_data)
|
||||
fit = x_data * slope + intercept
|
||||
|
||||
fig = plt.figure()
|
||||
fig.set_size_inches(7.5, 2.5)
|
||||
ax1 = plt.subplot2grid((2, 5), (0, 0), rowspan=2)
|
||||
ax2 = plt.subplot2grid((2, 5), (0, 1), rowspan=2)
|
||||
ax3 = plt.subplot2grid((2, 5), (1, 2), rowspan=1)
|
||||
ax4 = plt.subplot2grid((2, 5), (0, 3), rowspan=2, colspan=2)
|
||||
|
||||
ax1.grid(axis='y', zorder=0)
|
||||
ax1.scatter(x_data, y_data, zorder=3)
|
||||
ax1.plot(x_data, fit, zorder=4, color='r')
|
||||
ax1.set_ylim([85, 101])
|
||||
ax1.set_xticks(x_data[0::2])
|
||||
ax1.set_xticklabels(x_labels[0::2], rotation=45, fontsize=9)
|
||||
ax1.text(-0.3, 1.05, "A", transform=ax1.transAxes, size=12)
|
||||
|
||||
ax2.grid(axis='y', zorder=0)
|
||||
ax2.scatter(x_data, y_data, zorder=3)
|
||||
ax2.plot(x_data, fit, zorder=4, color='r')
|
||||
ax2.set_ylim([0, 120])
|
||||
ax2.set_xticks(x_data[0::2])
|
||||
ax2.set_xticklabels(x_labels[0::2], rotation=45, fontsize=9)
|
||||
ax2.text(-0.3, 1.05, "B", transform=ax2.transAxes, size=12)
|
||||
|
||||
ax3.grid(axis='y', zorder=0)
|
||||
ax3.scatter(x_data, y_data, zorder=3)
|
||||
ax3.plot(x_data, fit, zorder=4, color='r')
|
||||
ax3.set_ylim([85, 101])
|
||||
ax3.set_xticks(x_data[0::2])
|
||||
ax3.set_xticklabels(x_labels[0::2], rotation=45, fontsize=9)
|
||||
ax3.text(-0.3, 1.1, "C", transform=ax3.transAxes, size=12)
|
||||
|
||||
ax4.grid(axis='y', zorder=0)
|
||||
ax4.scatter(x_data, y_data, zorder=3)
|
||||
ax4.plot(x_data, fit, zorder=4, color='r')
|
||||
ax4.set_ylim([85, 101])
|
||||
ax4.set_xticks(x_data)
|
||||
ax4.set_xticklabels(x_labels, rotation=45, fontsize=9)
|
||||
ax4.text(-0.15, 1.05, "D", transform=ax4.transAxes, size=12)
|
||||
|
||||
fig.subplots_adjust(left=0.05, top=0.9, bottom=0.175, right=0.97, hspace=0.5, wspace=0.4)
|
||||
plt.savefig('../lecture/images/plot_scaling.pdf')
|
28
plotting/code/scatterplot.m
Normal file
28
plotting/code/scatterplot.m
Normal file
@ -0,0 +1,28 @@
|
||||
x = 1:2:100;
|
||||
y = (0.5 .* x - 0.56) + randn(size(x)) .* 5.;
|
||||
|
||||
f = figure();
|
||||
set(f, 'paperunits', 'centimeter', 'papersize', [15, 5], ...
|
||||
'paperposition', [0, 0, 15, 5], 'color', 'white');
|
||||
|
||||
subplot(1, 3, 1);
|
||||
scatter(x, y, 15, 'r', 'filled');
|
||||
xlabel('x');
|
||||
ylabel('y');
|
||||
text(-35, max(ylim) * 1.075,'A', 'FontSize', 12);
|
||||
|
||||
subplot(1, 3, 2)
|
||||
scatter(x, y, 1:length(x), 'r');
|
||||
xlabel('x');
|
||||
ylabel('y');
|
||||
text(-35, max(ylim) * 1.075,'B', 'FontSize', 12);
|
||||
|
||||
subplot(1, 3, 3)
|
||||
colors = zeros(length(x),3);
|
||||
colors(:,1) = round(1:255/length(x):255)/255';
|
||||
scatter(x, y, 15, colors, 'filled')
|
||||
xlabel('x');
|
||||
ylabel('y');
|
||||
text(-35, max(ylim) * 1.075,'C', 'FontSize', 12);
|
||||
|
||||
saveas(f, '../lecture/images/scatterplot.png')
|
BIN
plotting/lecture/images/lissajous.png
Normal file
BIN
plotting/lecture/images/lissajous.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.8 KiB |
BIN
plotting/lecture/images/scatterplot.png
Normal file
BIN
plotting/lecture/images/scatterplot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 21 KiB |
@ -16,22 +16,12 @@
|
||||
|
||||
\input{plotting}
|
||||
|
||||
\subsection{Error bars and error areas}
|
||||
|
||||
\subsection{Scatter plot}
|
||||
|
||||
\subsection{Histograms}
|
||||
|
||||
\subsection{Heatmaps}
|
||||
|
||||
\subsection{3-D plot}
|
||||
|
||||
\subsection{Polar plot}
|
||||
|
||||
\subsection{print instead of saveas????}
|
||||
|
||||
\subsection{Movies and animations}
|
||||
|
||||
\section{TODO}
|
||||
\begin{itemize}
|
||||
\item Beispiele schlechter plots sollten mehr Bezug zu den Typen von
|
||||
|
@ -66,8 +66,8 @@ sketch and the exact position of the data points is of no importance.
|
||||
|
||||
|
||||
The following figures show examples of misleading or suggestive
|
||||
presentaions of data. Several of the effects have been axaggerated to
|
||||
make the point. A little more subtlely these methods are employed to
|
||||
presentations of data. Several of the effects have been exaggerated to
|
||||
make the point. A little more subtlety these methods are employed to
|
||||
nudge the viewers experience into the desired direction. You can find
|
||||
more examples on \url{https://en.wikipedia.org/wiki/Misleading_graph}.
|
||||
|
||||
@ -75,7 +75,7 @@ more examples on \url{https://en.wikipedia.org/wiki/Misleading_graph}.
|
||||
\includegraphics[width=0.35\textwidth]{misleading_pie}
|
||||
\hspace{0.05\textwidth}
|
||||
\includegraphics[width=0.35\textwidth]{sample_pie}
|
||||
\titlecaption{Perspective distortion influendes the perceived
|
||||
\titlecaption{Perspective distortion influences the perceived
|
||||
size.}{By changing the perspective of the 3-D illustration the
|
||||
highlighted segment \textbf{C} gains more weight than it should
|
||||
have. In the left graph segments \textbf{A} and \textbf{C} appear
|
||||
@ -85,21 +85,13 @@ more examples on \url{https://en.wikipedia.org/wiki/Misleading_graph}.
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]
|
||||
\begin{minipage}[t]{0.3\textwidth}
|
||||
\includegraphics[width=0.9\textwidth]{line_graph1}
|
||||
\end{minipage}
|
||||
\begin{minipage}[t]{0.3\textwidth}
|
||||
\includegraphics[width=0.9\textwidth]{line_graph1_3}
|
||||
\end{minipage}
|
||||
\begin{minipage}[t]{0.3\textwidth}
|
||||
\includegraphics[width=0.9\textwidth]{line_graph1_4}
|
||||
\end{minipage}
|
||||
\titlecaption{Chosing the figure format influences the erceived
|
||||
strength of a correlation.}{All three subplots show the same data.
|
||||
By choosing a certain figure size we can pronounce or to reduce
|
||||
the perceived strength of the correlation in th data. Techincally
|
||||
all three plots are correct.
|
||||
\url{https://en.wikipedia.org/wiki/Misleading_graph}}\label{misleadingscalingfig}
|
||||
\includegraphics[width=0.9\textwidth]{plot_scaling.pdf}
|
||||
\titlecaption{Choosing the figure format and scaling of the axes
|
||||
influences the perceived strength of a correlation.}{All subplots
|
||||
show the same data. By choosing a certain figure size we can
|
||||
pronounce or reduce the perceived strength of the correlation
|
||||
in the data. Technically all three plots are correct.
|
||||
}\label{misleadingscalingfig}
|
||||
\end{figure}
|
||||
|
||||
\begin{figure}[p]
|
||||
@ -116,8 +108,8 @@ more examples on \url{https://en.wikipedia.org/wiki/Misleading_graph}.
|
||||
symbols have been used to illustrate the measurements made in two
|
||||
categories. The measured value for category \textbf{B} is actually
|
||||
three times the measured value for category \textbf{A}. In the
|
||||
left graph the symbol for catergory \textbf{B} has been scaled to
|
||||
triple heigth while maintaining the porpotions. This appears jusst
|
||||
left graph the symbol for category \textbf{B} has been scaled to
|
||||
triple height while maintaining the proportions. This appears just
|
||||
fair and correct but leads to the effect that the covered surface
|
||||
is not increased to the 3-fold but the 9-fold (center plot). The
|
||||
plot on the right shows how it could have been done correctly.
|
||||
@ -217,15 +209,15 @@ number of datasets.
|
||||
\subsection{Simple plotting}
|
||||
|
||||
Creating a simple line-plot is rather easy. Assuming there exists a
|
||||
varaible \varcode{y} in the \codeterm{Workspace} that contains the
|
||||
variable \varcode{y} in the \codeterm{Workspace} that contains the
|
||||
measurement data it is enough to call \code[plot()]{plot(y)}. At the
|
||||
first call of this function a new window will be opened and the data
|
||||
will be plotted with as a line plot. If you repeatedly call this
|
||||
function the current plot will be replaced unless the the
|
||||
\code[hold]{hold on} command was issued before. If it was, the current
|
||||
plot is held and a second line will be added to it. Calling
|
||||
\code[hold]{hold off} will release the plot and any subsequent
|
||||
plotting will replace the previous plot.
|
||||
function the current plot will be replaced unless the \code[hold]{hold
|
||||
on} command was issued before. If it was, the current plot is held
|
||||
and a second line will be added to it. Calling \code[hold]{hold off}
|
||||
will release the plot and any subsequent plotting will replace the
|
||||
previous plot.
|
||||
|
||||
In our previous call to \varcode{plot} we have provided just a single
|
||||
variable containing the y-values of the plot. The x-axis will be
|
||||
@ -239,8 +231,8 @@ plotted as a line plot with a solid blue line of the with 1pt. A
|
||||
second plot that is added to the figure will be plotted in red using
|
||||
the same standard settings. The order of the used colors depends on
|
||||
the \enterm{colormap} settings which can be adjusted to personal taste
|
||||
or need. Table\,\ref{plotlinestyles} shows some predefined values
|
||||
that can be chosen for the line style, the marker, or the color. For
|
||||
or need. Table\,\ref{plotlinestyles} shows some predefined values that
|
||||
can be chosen for the line style, the marker, or the color. For
|
||||
additional options consult the help.
|
||||
|
||||
\begin{table}[tp]
|
||||
@ -269,12 +261,12 @@ additional options consult the help.
|
||||
|
||||
\subsection{Changing properties of a line plot}
|
||||
|
||||
Die properties of line plots can be changed by passing more arguments
|
||||
to the \varcode{plot} function. The command show in
|
||||
listing\,\ref{settinglineprops} creates line plot using the dotted
|
||||
line style, setting the line width to 1.5pt, a red line color is
|
||||
chosen, and star marker symbols will be used. Finally the name of the
|
||||
curve is set to 'plot 1' which will be displayed in a legend, if
|
||||
The properties of line plots can be changed by passing more arguments
|
||||
to the \varcode{plot} function. The command shown in
|
||||
listing\,\ref{settinglineprops} creates a line plot using the dotted
|
||||
line style, sets the line width to 1.5pt, a red line color is
|
||||
chosen, and star marker symbols is used. Finally, the name of the
|
||||
curve is set to \emph{plot 1} which will be displayed in a legend, if
|
||||
chosen.
|
||||
|
||||
\begin{lstlisting}[label=settinglineprops, caption={Setting line properties when calling \varcode{plot}.}]
|
||||
@ -285,7 +277,7 @@ chosen.
|
||||
\begin{important}[Choosing the right color.]
|
||||
Choosing the perfect color goes a little bit beyond personal
|
||||
taste. When creating a colored plot you may want to consider the
|
||||
following:
|
||||
following points:
|
||||
\begin{itemize}
|
||||
\item A substantial amount (about 9\%) of the male population can
|
||||
not distinguish between red and green.
|
||||
@ -301,13 +293,13 @@ The first thing a data plot needs are axis labels with a correct
|
||||
unit. By calling the functions \code[xlabel]{xlabel('Time [ms]')} and
|
||||
\code[ylabel]{ylabel{'Voltage [mV]'}} these can be set. By default the
|
||||
axes will be scaled to show the whole data range. The extremes will be
|
||||
selected as the closest integer for small values of the next full
|
||||
multiple of tens, hundreds, thousands, etc. depending on the maximum
|
||||
value. If these defaults do not match our needs the limits of the axes
|
||||
can be explicitly set with the functions \code[xlim()]{xlim()} and
|
||||
\code[ylim()]{ylim()} functions. To do this, the functions expect a
|
||||
single argument that is a vector containing the minimum and maximum
|
||||
value. Table\,\ref{plotaxisprops} list some of the commonly adjusted
|
||||
selected as the closest integer for small values or the next full
|
||||
multiple of tens, hundreds, thousands, etc.\ depending on the maximum
|
||||
value. If these defaults do not match our needs, the limits of the
|
||||
axes can be explicitly set with the functions \code[xlim()]{xlim()}
|
||||
and \code[ylim()]{ylim()}. To do this, the functions expect a single
|
||||
argument, that is a vector containing the minimum and maximum
|
||||
value. Table\,\ref{plotaxisprops} lists some of the commonly adjusted
|
||||
properties of an axis. These properties can be set using the
|
||||
\code[set()]{set()} function. The \code{set} function expects as a
|
||||
first argument a \enterm{handle} of the affected axis. An axis handle
|
||||
@ -315,8 +307,9 @@ of the current plot is returned by the \code[gca]{gca} function (gca
|
||||
stands for ``get current axis''). The following arguments passed to
|
||||
\code{set} are pairs of the property name and the desired value. It is
|
||||
possible to set any number of properties using a single call to
|
||||
\code{set}. See listing\,\ref{niceplotlisting} (lines 20 and 21) for an
|
||||
example.
|
||||
\code{set}. See listing\,\ref{niceplotlisting} (lines 20 and 21) for
|
||||
an example (these commands could be joined into a single call to
|
||||
\code{set} but have been split for better readability).
|
||||
|
||||
\begin{table}[tp]
|
||||
\titlecaption{Incomplete list of axis properties.}{For a complete
|
||||
@ -325,18 +318,18 @@ example.
|
||||
value of a property it will be listed first.}\label{plotaxisprops}
|
||||
\begin{tabular*}{1\textwidth}{lp{5.8cm}p{5.5cm}} \hline
|
||||
\textbf{property} & \textbf{Description} & \textbf{options} \erh
|
||||
\\ \hline \code{Box} & Defines whether the axes are drawn an all
|
||||
\\ \hline \code{Box} & Defines whether the axes are drawn on all
|
||||
sides. & $\{'on'|'off'\}$ \erb\\
|
||||
\code{Color} & Background color of the drawing area, not the whole figure. & Any RGB or CMYK
|
||||
values. \\
|
||||
\code{FontName} & Name of the font used for labeling. & Installed fonts. \\
|
||||
\code{FontSize} & Fontsize used for labels. & any scalar value.\\
|
||||
\code{FontSize} & Size of the font used for labels. & Any scalar value.\\
|
||||
\code{FontUnit} & Unit in which the font size is given. & $\{'points' | 'centimeters' | 'inches',
|
||||
...\}$\\ \code{FontWeight} & Bold or normal font. & $\{'normal' | 'bold'\}$\\
|
||||
\code{TickDir} & Direction of the axis ticks. & $\{'in' | 'out'\}$\\
|
||||
\code{TickLength} & Length of the ticks. & scalar value\\
|
||||
\code{TickLength} & Length of the ticks. & A scalar value\\
|
||||
\code{X-, Y-, ZDir} & Direction of axis scaling. Zero bottom/left, or not? & $\{'normal' | 'reversed'\}$\\
|
||||
\code{X-, Y-, ZGrid} & Defines whether grid line for the respective axes should be plotted? &
|
||||
\code{X-, Y-, ZGrid} & Defines whether grid lines for the respective axes should be plotted? &
|
||||
$\{'off'|'on'\}$ \\
|
||||
\code{X-, Y-, ZScale} & Linear of logarithmic scaling? & $\{'linear' | 'log'\}$\\
|
||||
\code{X-, Y-, ZTick} & Position of the tick marks. & Vector of positions.\\
|
||||
@ -345,32 +338,34 @@ example.
|
||||
\end{table}
|
||||
|
||||
|
||||
\subsection{Changing the figure properties}
|
||||
\subsection{Changing figure properties}
|
||||
|
||||
\begin{table}[tp]
|
||||
\titlecaption{Incomple list of available figure properties.}{For a complete reference consult the \matlab{} help or select the property editor while having the figuree background selected
|
||||
\titlecaption{Incomplete list of available figure properties.}{For a
|
||||
complete reference consult the \matlab{} help or select the
|
||||
property editor while having the figure background selected
|
||||
(\figref{ploteditorfig}).}\label{plotfigureprops}
|
||||
\begin{tabular*}{1\textwidth}{lp{6.6cm}p{5.7cm}} \hline
|
||||
\textbf{property} & \textbf{description} & \textbf{options}
|
||||
\erh \\
|
||||
\hline \code{Color} & Background color of the figure, not the drawing area. & Any RGB, CMYK values. \erb
|
||||
\\ \code{PaperPosition} & Position of the axes on the paper. & 4-element vector containing the positions of the botom-left and top-right corners. \\
|
||||
\\ \code{PaperPosition} & Position of the axes on the paper. & 4-element vector containing the positions of the bottom-left and top-right corners. \\
|
||||
\code{PaperSize} & Size of the paper. & 2-element vector defining width and height.\\
|
||||
\code{PaperUnits} & Unit in which size and postition are given. & $\{'inches' | 'centimeters' |
|
||||
\code{PaperUnits} & Unit in which size and position are given. & $\{'inches' | 'centimeters' |
|
||||
'normalized' | 'points'\}$\\
|
||||
\code{Visible} & Defines whether the plot should actually be drawn on screen. Useful when plots should not be displayed but directly saved to file. & $\{'on' | 'off'\}$\\ \hline
|
||||
\end{tabular*}
|
||||
\end{table}
|
||||
|
||||
Like axes also the whole figure has several properties that can be
|
||||
adjusted to the current needs. Most notably the paper (figure) size
|
||||
and the placement of the axes on the
|
||||
paper. Table\,\ref{plotfigureprops} lists commonly used ones. For a
|
||||
complete reference check the help. To change the properties, we again
|
||||
use the \code{set()} function. The first argument is now a handle to
|
||||
the current figure, not the current axis as before. Analogously to the
|
||||
\code{gca} command there is a \code{gcf} (``get current figure'')
|
||||
command with which the handle can be retrieved.
|
||||
Like axes, also figure has several properties that can be adjusted to
|
||||
the current needs. Most notably the paper (figure) size and the
|
||||
placement of the axes on the paper. Table\,\ref{plotfigureprops} lists
|
||||
commonly used properties. For a complete reference check the help. To
|
||||
change the properties, we again use the \code{set()} function. The
|
||||
first argument is now a handle to the current figure, not the current
|
||||
axis as before. Analogously to the \code{gca} command there is a
|
||||
\code{gcf} (``get current figure'') command with which the handle can
|
||||
be retrieved.
|
||||
|
||||
The script shown in the listing\,\ref{niceplotlisting} exemplifies
|
||||
several features of the plotting system and automatically generates
|
||||
@ -378,10 +373,11 @@ and saves figure\,\ref{spikedetectionfig}. With any execution of this
|
||||
script exactly the same plot will be created. If we decided to plot a
|
||||
different recording, the format will stay exactly the same, just the
|
||||
data changes. Of special interest are the lines 22 and 23 which set
|
||||
the size of the figure and line 26 which saves the figure in the 'pdf'
|
||||
format to file. When calling the function \code{saveas()} the first
|
||||
argument is the current figure handle a, the second the file name, and
|
||||
the last one defines the output format (box\,\ref{graphicsformatbox}).
|
||||
the size of the figure and positions the axes on the paper. Line 26
|
||||
finally saves the figure in the 'pdf' format to file. When calling the
|
||||
function \code{saveas()} the first argument is the current figure
|
||||
handle, the second the file name, and the last one defines the
|
||||
output format (box\,\ref{graphicsformatbox}).
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics{spike_detection} \titlecaption{Automatically
|
||||
@ -395,11 +391,11 @@ the last one defines the output format (box\,\ref{graphicsformatbox}).
|
||||
\item \enterm{Bitmaps}
|
||||
\item \enterm{Vector graphics}
|
||||
\end{enumerate}
|
||||
When using bitmaps a color is given for each pixel of the stored
|
||||
figure. Bitmaps do have a fixed resolution (e.g.\,300\,dpi --- dots
|
||||
per inch), they are very useful for photographs. In the contrary
|
||||
vector graphics store descriptions of the graphic in terms of so
|
||||
called primitives (lines, circles, polygons, etc.). The main
|
||||
When using bitmaps a color value is given for each pixel of the
|
||||
stored figure. Bitmaps do have a fixed resolution (e.g.\,300\,dpi
|
||||
--- dots per inch), they are very useful for photographs. In the
|
||||
contrary, vector graphics store descriptions of the graphic in terms
|
||||
of so called primitives (lines, circles, polygons, etc.). The main
|
||||
advantage of a vector graphic is that it can be scaled without a
|
||||
loss of quality.
|
||||
|
||||
@ -448,12 +444,56 @@ various examples and the respective code on their website
|
||||
|
||||
For some types of plots we present examples in the following sections.
|
||||
|
||||
\subsection{Line plot, subplots}
|
||||
\subsection{Scatter}
|
||||
|
||||
For displaying events or pairs of x-y coordinates the standard line
|
||||
plot is not optimal. Rather, we use \code[scatter()]{scatter} for this
|
||||
purpose. For example, we have a number of measurements of a system's
|
||||
response to a certain stimulus intensity. There is no dependency
|
||||
between the data points, drawing them with a line-plot would be
|
||||
nonsensical (figure\,\ref{scatterplotfig}\,A). In contrast to
|
||||
\codeterm{}{plot} we need to provide x- and y-coordinates in order to
|
||||
draw the data. In the example we also provide further arguments to set
|
||||
the size, color of the dots and specify that they are filled
|
||||
(listing\,\ref{scatterlisting1}).
|
||||
|
||||
\lstinputlisting[caption={Creating a scatter plot with red filled dots.},
|
||||
label=scatterlisting1, firstline=9, lastline=9]{scatterplot.m}
|
||||
|
||||
We could have used plot for this purpose and set the marker to
|
||||
something and the line-style to ``none'' to draw an equivalent
|
||||
plot. Scatter, however offers some more advanced features that allows
|
||||
to add two more dimensions to the plot
|
||||
(figure\,\ref{scatterplotfig}\,B,\,C). For each dot one can define an
|
||||
individual size and color. In this example the size argument is simply
|
||||
a vector of the same size as the data that contains number from 1 to
|
||||
the length of 'x' (line 1 in listing\,\ref{scatterlisting2}). To
|
||||
manipulate the color we need to specify a length(x)-by-3 matrix. For
|
||||
each dot we provide an individual color (i.e. the RGB triplet in each
|
||||
row of the color matrix, lines 2-4 in listing\,\ref{scatterlisting2})
|
||||
|
||||
|
||||
\lstinputlisting[caption={Creating a scatter plot with size and color
|
||||
variations. The RGB triplets define the respective color intensity
|
||||
in a range 0:1. Here, we modify only the red color channel.},
|
||||
label=scatterlisting2, linerange={15-15, 21-23}]{scatterplot.m}
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics{scatterplot}
|
||||
\titlecaption{Scatterplots.}{Scatterplots are used to draw
|
||||
datapoints where there is no direct dependency between the
|
||||
individual measurements (like time). Scatter offers several
|
||||
advantages over the standard plot command. One can vary the size
|
||||
and/or the color of each dot.}\label{scatterplotfig}
|
||||
\end{figure}
|
||||
|
||||
|
||||
\subsection{Subplots}
|
||||
A very common scenario is to combine several plots in the same
|
||||
figure. To do this we create so-called subplots
|
||||
figures\,\ref{regularsubplotsfig},\,\ref{irregularsubplotsfig}. The
|
||||
\code[subplot()]{subplot()} command allows to place multiple axes onto
|
||||
a single paper. Generally, \varcode{subplot} expects three argument
|
||||
a single sheet of paper. Generally, \varcode{subplot} expects three argument
|
||||
defining the number of rows, column, and the currently active
|
||||
plot. The currently active plot number starts with 1 and goes up to
|
||||
$rows \cdot columns$ (numbers in the subplots in
|
||||
@ -472,18 +512,18 @@ figures\,\ref{regularsubplotsfig}, \ref{irregularsubplotsfig}).
|
||||
grid \figref{regularsubplotsfig}.}, label=regularsubplotlisting,
|
||||
basicstyle=\ttfamily\scriptsize]{regular_subplot.m}
|
||||
|
||||
By default, all suplots have the same size, if something else is
|
||||
desired, e.g., one suplot should span a whole row, while two others
|
||||
are smaller and placed side by side in the same row, the third
|
||||
argument of \varcode{subplot} can be a vector or numbers that should
|
||||
be joined. These have, of course, be adjacent numbers
|
||||
By default, all subplots have the same size, if something else is
|
||||
desired, e.g.\ one subplot should span a whole row, while two others
|
||||
are smaller and should be placed side by side in the same row, the
|
||||
third argument of \varcode{subplot} can be a vector or numbers that
|
||||
should be joined. These have, of course, to be adjacent numbers
|
||||
(\figref{irregularsubplotsfig},
|
||||
listing\,\ref{irregularsubplotslisting}).
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=0.5\linewidth]{irregular_subplot}
|
||||
\titlecaption{Subplots of different size.}{The third argument of
|
||||
\varcode{subpot} may be a vector of cells that should be joined
|
||||
\varcode{subplot} may be a vector of cells that should be joined
|
||||
into the same subplot. See
|
||||
listing\,\ref{irregularsubplotslisting}}\label{irregularsubplotsfig}
|
||||
\end{figure}
|
||||
@ -500,6 +540,98 @@ used cells of the grid by passing a vector as the third argument to
|
||||
label=irregularsubplotslisting,
|
||||
basicstyle=\ttfamily\scriptsize]{irregular_subplot.m}
|
||||
|
||||
|
||||
\subsection{Show estimation errors}
|
||||
The repeated measurements of a quantity almost always results in
|
||||
varying results. Neuronal activity, for example is notoriously
|
||||
noisy. The responses of a neuron to repeated stimulation with the same
|
||||
stimulus may share common features but are different each time. This
|
||||
is the reason we calculate measures that describe the variability of
|
||||
such as the standard deviation and thus need a way to
|
||||
illustrate it in plots of scientific data. Providing an estimate of
|
||||
the error gives the reader the chance of assessing the reliability of
|
||||
the data and get a feeling of possible significance of a
|
||||
difference in the average values.
|
||||
|
||||
\matlab{} offers several ways to plot the average and the error. We
|
||||
will introduce two possible ways.
|
||||
\begin{itemize}
|
||||
\item The \code[errorbar()]{errorbar} function (figure\,\ref{errorbarplot} A, B).
|
||||
\item Using the \code[fill()]{fill} function to draw an area showing
|
||||
the spread of the data (figure\,\ref{errorbarplot} C).
|
||||
\end{itemize}
|
||||
|
||||
\subsubsection{Errorbar}
|
||||
|
||||
Using the \code[errorbar()]{errorbar} function is rather straight
|
||||
forward. In its easiest form, it expects three arguments being the x-
|
||||
and y-values plus the error (line 5 in listing \ref{errorbarlisting},
|
||||
note that we provide additional optional arguments to set the
|
||||
marker). This form is obviously only suited for symmetric
|
||||
distributions. In case the values are symmetrically distributed, a
|
||||
separate error for positive and negative deflections from the mean are
|
||||
more apt. Accordingly, four arguments are needed (line 12 in listing
|
||||
\ref{errorbarlisting}). The first two arguments are the same, the next
|
||||
to represent the positive and negative deflections.
|
||||
|
||||
By default the \code{errorbar} function does not draw a marker. In the
|
||||
examples shown here we provide extra arguments to define that a circle
|
||||
is used for that purpose. The line connecting the average values can
|
||||
be removed by passing additional arguments. The properties of the
|
||||
errorbars themselves (linestyle, linewidth, capsize, etc.) can be
|
||||
changed by taking the return argument of \code{errorbar} and changing
|
||||
its properties. See the \matlab{} help for more information.
|
||||
|
||||
\begin{figure}[ht]
|
||||
\includegraphics[width=0.9\linewidth]{errorbars}
|
||||
\titlecaption{Adding error bars to a line plot}{\textbf{A}
|
||||
symmetrical error around the mean (e.g.\ using the standard
|
||||
deviation). \textbf{B} Errorbars of an asymmetrical distribution
|
||||
of the data (note: the average value is now the median and the
|
||||
errors are the lower and upper quartiles). \textbf{C} A shaded
|
||||
area is used to illustrate the spread of the data. See
|
||||
listing\,\ref{errorbarlisting}}\label{errorbarplot}
|
||||
\end{figure}
|
||||
|
||||
\lstinputlisting[caption={Illustrating estimation errors. Script that
|
||||
creates \figref{errorbarplot}.},
|
||||
label=errorbarlisting, firstline=13, lastline=29,
|
||||
basicstyle=\ttfamily\scriptsize]{errorbarplot.m}
|
||||
|
||||
\subsubsection{Fill}
|
||||
For a few years now it has become fancy to illustrate the error not
|
||||
using errorbars but by drawing a shaded area around the mean. Beside
|
||||
their fancyness there is also a real argument in favor of using error
|
||||
areas instead of errorbars: In case you have a lot of data points with
|
||||
respective errorbars such that they would merge in the figure it is
|
||||
cleaner and probably easier to read and handle if one uses an error
|
||||
area instead. To achieve an illustration as shown in
|
||||
figure\,\ref{errorbarplot} C, we use the \code{fill} command in
|
||||
combination with a standard line plot. The original purpose of
|
||||
\code{fill} is to draw a filled polygon. We hence have to provide it
|
||||
with the vertex points of the polygon. For each x-value we now have
|
||||
two y-values (average minus error and average plus error). Further, we
|
||||
want the vertices to be connected in a defined order. One can achieve
|
||||
this by going back and forth on the x-axis; we append a reversed
|
||||
version of the x-values to the original x-values using the \code{cat}
|
||||
and inversion is done using the \code{fliplr} command (line 3 in
|
||||
listing \ref{errorbarlisting2}; Depending on the layout of your data
|
||||
you may need concatenate along a different dimension of the data and
|
||||
use \code{flipud} instead). The y-coordinates of the polygon vertices
|
||||
are concatenated in a similar way (line 4). In the example shown here
|
||||
we accept the polygon object that is returned by fill (variable p) and
|
||||
use it to change a few properties of the polygon. The \emph{FaceAlpha}
|
||||
property defines the transparency (or rather the opaqueness) of the
|
||||
area. The provided alpha value is a number between 0 and 1 with zero
|
||||
leading to invisibility and a value of one to complete
|
||||
opaqueness. Finally, we use the normal plot command to draw a line
|
||||
connecting the average values.
|
||||
|
||||
\lstinputlisting[caption={Illustrating estimation errors. Script that
|
||||
creates \figref{errorbarplot}.}, label=errorbarlisting2,
|
||||
firstline=30,
|
||||
basicstyle=\ttfamily\scriptsize]{errorbarplot.m}
|
||||
|
||||
\subsection{Annotations, text}
|
||||
|
||||
Sometimes want to highlight certain parts of a plot or simply add an
|
||||
@ -510,7 +642,7 @@ the plot. While \varcode{text} simply prints out the given text string
|
||||
at the defined position (for example line in
|
||||
listing\,\ref{regularsubplotlisting}) the \varcode{annotation}
|
||||
function allows to add some more advanced highlights like arrows,
|
||||
lines, elipses, or rectangles. Figure\,\ref{annotationsplot} shows
|
||||
lines, ellipses, or rectangles. Figure\,\ref{annotationsplot} shows
|
||||
some examples, the respective code can be found in
|
||||
listing\,\ref{annotationsplotlisting}. For more options consult the
|
||||
documentation.
|
||||
@ -528,19 +660,63 @@ documentation.
|
||||
|
||||
\begin{important}[Positions in data or figure coordinates.]
|
||||
A very confusing pitfall are the different coordinate systems used
|
||||
by \varcode{text} and \varcode{annotation}. While text expects the
|
||||
positions to be in data coordinates, i.e.\,in the limits of the x-
|
||||
and y-axis, \varcode{annotation} requires the positions to be given
|
||||
in normalized figure coordinates. Normalized means that the width
|
||||
and height of the figure are expressed by numbers in the range 0 to
|
||||
1. The bottom/left corner then has the coordinates $(0,0)$ and the
|
||||
top/right corner the $(1,1)$.
|
||||
by \varcode{text} and \varcode{annotation}. While \varcode{text}
|
||||
expects the positions to be in data coordinates, i.e.\,in the limits
|
||||
of the x- and y-axis, \varcode{annotation} requires the positions to
|
||||
be given in normalized figure coordinates. Normalized means that the
|
||||
width and height of the figure are expressed by numbers in the range
|
||||
0 to 1. The bottom/left corner then has the coordinates $(0,0)$ and
|
||||
the top/right corner the $(1,1)$.
|
||||
|
||||
Why different coordinate systems? Using data coordinates is
|
||||
convenient for annotations within a plot, but what about an arrow
|
||||
that should be drawn between two subplots?
|
||||
\end{important}
|
||||
|
||||
\subsection{Animations and movies}
|
||||
A picture is worth a thousand words and sometimes creating animations
|
||||
or movies is worth many pictures. They can help understanding complex
|
||||
or time-dependent developments and may add some variety to a
|
||||
presentation. The following example shows how a movie can be created
|
||||
and saved to file. A similar mechanism is available to produce
|
||||
animations that are supposed to be shown within \matlab{} but for this
|
||||
we point to the documentation of the \code[movie()]{movie()}
|
||||
command. The underlying principle is the same, however. The code shown
|
||||
in listing\,\ref{animationlisting} creates an animation of a
|
||||
Lissajous figure. The basic steps are:
|
||||
\begin{enumerate}
|
||||
\item Create a figure and set some basic properties (lines 7 --- 10).
|
||||
\item Create a \code[VideoWriter()]{VideoWriter} object that, in this
|
||||
example, takes the filename and the profile, the mpg-4 compression
|
||||
profile, as arguments (line 12). For more options see the
|
||||
documentation.
|
||||
\item We can set the desired framerate and the quality of the video
|
||||
(lines 13, 14). Quality is a value between 0 and 100, where 100 is
|
||||
the best quality but leads to the largest files. The framerate
|
||||
defines how quickly the individual frames will switched. In our
|
||||
example, we create 500 frames and the video framerate is
|
||||
25\,Hz. That is, the movie will have a duration of
|
||||
$500/25 = 20$\,seconds.
|
||||
\item Open the destination file (line 16). Opening means that the file
|
||||
is created and opened for writing. This also implies that is has to
|
||||
be closed after the whole process (line 31).
|
||||
\item For each frame of the video, we plot the appropriate data (we
|
||||
use \code[scatter]{scatter} for this purpose, line 20) and ``grab''
|
||||
the frame (line 28). Grabbing is similar to making a screenshot of
|
||||
the figure. The \code{drawnow}{drawnow} command (line 27) is used to
|
||||
stop the excution of the for loop until the drawing process is
|
||||
finished.
|
||||
\item Write the frame to file (line 29).
|
||||
\item Finally, close the file (line 31).
|
||||
\end{enumerate}
|
||||
|
||||
\lstinputlisting[caption={Making animations and saving them as a
|
||||
movie.}, label=animationlisting, firstline=3, lastline=33,
|
||||
basicstyle=\ttfamily\scriptsize]{movie_example.m}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
\section{Summary}
|
||||
A good plot of scientific data displays the data completely and
|
||||
|
@ -1,14 +1,16 @@
|
||||
\documentclass[12pt,a4paper]{article}
|
||||
\documentclass[12pt,a4paper,landscape]{article}
|
||||
|
||||
\usepackage[ngerman]{babel}
|
||||
\usepackage{pslatex}
|
||||
\usepackage{graphics}
|
||||
|
||||
%%%%% page style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=10mm,right=10mm,top=10mm,bottom=10mm,headsep=0ex,headheight=0ex,footskip=0ex]{geometry}
|
||||
\pagestyle{empty}
|
||||
|
||||
\newcommand{\rot}[1]{\rotatebox{90}{#1}\,\,}
|
||||
|
||||
\newcounter{studentnum}
|
||||
\newcommand{\num}{\rule{0pt}{5.8ex}{\stepcounter{studentnum}\small \arabic{studentnum}}}
|
||||
\newcommand{\num}{\rule{0pt}{7.0ex}{\stepcounter{studentnum}\small \arabic{studentnum}}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -17,28 +19,37 @@
|
||||
\sffamily
|
||||
\section*{Scientific computing WS17/18}
|
||||
|
||||
\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}|}
|
||||
\noindent
|
||||
\begin{tabular}{|p{0.16\textwidth}|p{0.1\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|p{0.024\textwidth}|l|l|}
|
||||
\hline
|
||||
Name & Project & \multicolumn{5}{l|}{Project} & \multicolumn{3}{l|}{Figures} & \multicolumn{8}{l|}{Code} & Sum & Grade \rule{0.pt}{3ex} \\
|
||||
& & \rot{Understanding} & \rot{Presentation}\rot{Structure, didactics} & \rot{Completed} & \rot{Bonus:}\rot{Context} & \rot{Bonus:}\rot{Own ideas} & \rot{Readability}\rot{font size, etc.} & \rot{Labels}\rot{and units} & \rot{Design} & \rot{Runs} & \rot{Names of}\rot{vars and funcs} & \rot{Style: white space}\rot{Spaghetti, structure} & \rot{Functions: used,}\rot{purpose, standalone} & \rot{Docu script} & \rot{Docu functions} & \rot{Figures saved} & \rot{Bonus:}\rot{Interesting code} & & \\
|
||||
& & 0--3 & 0--2 & 0--2 & 0, 1 & 0--2 & 0--2 & 0--2 & 0--2 & 0--2 & 0--2 & 0--2 & 0--3 & 0--2 & 0--2 & 0, 2 & 0--2 & 28 & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\end{tabular}
|
||||
|
||||
\noindent
|
||||
\begin{tabular}{|p{0.16\textwidth}|p{0.1\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|p{0.023\textwidth}|l|l|}
|
||||
\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
|
||||
Name & Project & \multicolumn{5}{l|}{Project} & \multicolumn{3}{l|}{Figures} & \multicolumn{8}{l|}{Code} & Sum & Grade \rule{0.pt}{3ex} \\
|
||||
& & \rot{Understanding} & \rot{Presentation}\rot{Structure, didactics} & \rot{Completed} & \rot{Bonus:}\rot{Context} & \rot{Bonus:}\rot{Own ideas} & \rot{Readability}\rot{font size, etc.} & \rot{Labels}\rot{and units} & \rot{Design} & \rot{Runs} & \rot{Names of}\rot{vars and funcs} & \rot{Style: white space}\rot{Spaghetti, structure} & \rot{Functions: used,}\rot{purpose, standalone} & \rot{Docu script} & \rot{Docu functions} & \rot{Figures saved} & \rot{Bonus:}\rot{Interesting code} & & \\
|
||||
& & 0--3 & 0--2 & 0--2 & 0, 1 & 0--2 & 0--2 & 0--2 & 0--2 & 0--2 & 0--2 & 0--2 & 0--3 & 0--2 & 0--2 & 0, 2 & 0--2 & 28 & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\num & & & & & & & & & & & & & & & & & & & \\ \hline
|
||||
\end{tabular}
|
||||
|
||||
\end{document}
|
||||
|
26
projects/gradetable.py
Normal file
26
projects/gradetable.py
Normal file
@ -0,0 +1,26 @@
|
||||
import os
|
||||
import numpy as np
|
||||
import matplotlib.pylab as plt
|
||||
|
||||
lecture = 'Models of Neural Systems, WS 16/17'
|
||||
exam = 1
|
||||
pmax = 33 # maximum available points
|
||||
p100 = 28 # points for 100%
|
||||
|
||||
# grades:
|
||||
gradestable = [ [ 0.9, 1.0 ], [ 0.84, 1.3 ], [ 0.80, 1.7 ], [ 0.76, 2.0 ], [ 0.72, 2.3 ],
|
||||
[ 0.68, 2.7 ], [ 0.64, 3.0 ], [ 0.60, 3.3 ], [ 0.56, 3.7 ], [ 0.50, 4.0 ] ]
|
||||
|
||||
df = open('notentabelle.dat', 'w')
|
||||
df.write('# Notentabelle\n')
|
||||
print '# Notentabelle'
|
||||
df.write('\n')
|
||||
df.write('#Key\n')
|
||||
s = '# Note\tProzent\tPunkte'
|
||||
df.write(s+'\n')
|
||||
print s
|
||||
for f,g in gradestable :
|
||||
s = ' \t%3.1f\t%5.0f\t%5.1f' % (g, 100.0*f, p100*f)
|
||||
df.write(s+'\n')
|
||||
print s
|
||||
df.close()
|
@ -44,8 +44,9 @@ def gradient(p, t, y, scale=None):
|
||||
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]
|
||||
omega_0 = 870
|
||||
amplitude = np.max(y) - np.min(y)
|
||||
params = [b_0, omega_0, amplitude, np.pi/2, amplitude/2, np.pi/3, amplitude/4, np.pi/4, amplitude/5, np.pi]
|
||||
scale = np.ones(len(params))
|
||||
scale[1] = 1000
|
||||
eps = 0.01
|
||||
|
@ -32,8 +32,7 @@ locking, respectively.
|
||||
i.e. the fish's field The data is sampled with 20\,kHz and the spike
|
||||
times are given in seconds.
|
||||
\begin{parts}
|
||||
\part Plot an average of the single EOD cylces of each fish
|
||||
together with an respective PSTH.
|
||||
\part Plot the average EOD waveform of each fish together with an respective PSTH.
|
||||
\part Implement a function that estimates the vector strength
|
||||
between the \textit{eod} and the spikes.
|
||||
\part Create a polar plot that shows the timing of the spikes
|
||||
|
@ -13,8 +13,8 @@
|
||||
|
||||
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung
|
||||
}}{{\bfseries\large Zeitabh\"angige Feuerrate}}{{\bfseries\large 13. Dezember, 2016}}
|
||||
\pagestyle{headandfoot} \header{{\bfseries\large Exercise
|
||||
}}{{\bfseries\large Time-dependent firing rate}}{{\bfseries\large December, 12, 2017}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}
|
||||
|
||||
@ -24,53 +24,54 @@
|
||||
\renewcommand{\baselinestretch}{1.15}
|
||||
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}
|
||||
\renewcommand{\solutiontitle}{\noindent\textbf{Solution}\par\noindent}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{document}
|
||||
|
||||
\vspace*{-6.5ex}
|
||||
\begin{center}
|
||||
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
||||
\textbf{\Large Introduction to scientific computing.}\\[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}
|
||||
|
||||
\begin{questions}
|
||||
\question Stelle die zeitabh\"angige Feuerrate eines Neurons
|
||||
dar. Diese soll auf Basis der instantanen Feuerrate (des
|
||||
Interspikeintervals) berechnet werden. Verwende dazu den Datensatz
|
||||
\code{lifoustim.mat}. Dieser enth\"at drei Variablen: 1. die
|
||||
Spikezeiten, 2. den Stimulus und 3. die zeitliche Aufl\"osung. Die
|
||||
Dauer eines Trials betr\"agt 30 Sekunden.
|
||||
\question Plot the time-dependent firing rate of a neuron. Calculate
|
||||
the firing rate from the instantaneous firing rate (based on the
|
||||
interspike interval). Use the \code{lifoustim.mat}. The dataset
|
||||
contains three variables. 1st the spike times in different trials,
|
||||
2nd the stimulus, and 3rd the temporal resolution. The total
|
||||
duration of each trial amounts to 30 seconds.
|
||||
|
||||
\begin{parts}
|
||||
\part Schreibe eine Funktion, die einen Vektor mit Spikezeiten,
|
||||
die Dauer des Trials, und die zeitliche Aufl\"osung entgegennimmt
|
||||
und die Zeitachse sowie die Feuerrate zur\"uckgibt.
|
||||
\part Benutze diese Funktion in einem Skript und stellt die Feuerrate
|
||||
eines einzelnen Trials sowie den Mittelwert \"uber alle Trials
|
||||
dar.
|
||||
\part Erweitere das Programm so, dass die Abbildung den Richtlinien
|
||||
des \textit{Journal of Neuroscience} entspricht
|
||||
(Schriftgr\"o{\ss}e, Abbildungsgr\"o{\ss}e).
|
||||
\part Die Abbildung sollte als pdf gespeichert werden.
|
||||
\part{} Write a function that takes three arguments: the spike
|
||||
times of a single trial, the trial duration and the temporal
|
||||
resolution. The function should return the time values and the
|
||||
firing rate in $Hz$.
|
||||
\part{} Write a script that applies the above function to estimate
|
||||
the firing rate of each trial. Plot a single individual responses
|
||||
and the average response as a function of time into the same plot.
|
||||
\part{} Extend your program that it saves the figure in a format
|
||||
according to the rules given by the \textit{Journal of
|
||||
Neuroscience}. This relates to the figure size and the
|
||||
fontsizes.
|
||||
\part{} Store the figure in pdf format.
|
||||
\end{parts}
|
||||
|
||||
\question Wie zuvor nur unter Verwendung der Binning Methode.
|
||||
\question{} As before but use the binning method.
|
||||
|
||||
\question Entscheide dich f\"ur eine Varainte und erweitere das
|
||||
entsprechende Skript, sodass auch die Interspikeintervallverteilung
|
||||
und die Verteilung der Spikecounts graphisch dargestellt werden. Die
|
||||
entsprechenden Abbildungen sollten als pdf gespeichert werden.
|
||||
\question{} Extend your script that it also plots the interspike
|
||||
interval histogram and the distribution of spike counts into
|
||||
separate figures. Save the figures to file using the pdf format.
|
||||
|
||||
\question Einige Trials sind anders als die \"Ubrigen. Benutze den
|
||||
Rasterplot um sie zu finden. Speichere die generierten Abbildungen.
|
||||
\question{} Some trials are different from the others.
|
||||
\begin{parts}
|
||||
\part Benutze den Rasterplot um sie zu finden. Worin unterscheiden sie sich von den anderen?
|
||||
\part Plotte die Verteilung der Spike counts.
|
||||
\part Filtere all die Trials heraus, deren Spikecount mehr als
|
||||
$2\sigma$ vom Mittelwert abweicht.
|
||||
\part Plotte die Feuerrate vor und nach dem Filtern.
|
||||
\part{} Use the rasterplot to identify them. In which sense
|
||||
are they different from the others? Save the rasterplot in pdf
|
||||
format.
|
||||
\part{} Identify those trial in which the total spike count
|
||||
deviates more than $2\sigma$ from the average.
|
||||
\end{parts}
|
||||
\end{questions}
|
||||
|
||||
|
@ -13,8 +13,8 @@
|
||||
|
||||
%%%%% text size %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=20mm,right=20mm,top=25mm,bottom=25mm]{geometry}
|
||||
\pagestyle{headandfoot} \header{{\bfseries\large \"Ubung
|
||||
}}{{\bfseries\large Korrelation Stimulus und Antwort}}{{\bfseries\large 20. Dezember, 2016}}
|
||||
\pagestyle{headandfoot} \header{{\bfseries\large Exercise
|
||||
}}{{\bfseries\large Correlation of stimulus and response}}{{\bfseries\large December 19, 2017}}
|
||||
\firstpagefooter{Dr. Jan Grewe}{Phone: 29 74588}{Email:
|
||||
jan.grewe@uni-tuebingen.de} \runningfooter{}{\thepage}{}
|
||||
|
||||
@ -24,53 +24,60 @@
|
||||
\renewcommand{\baselinestretch}{1.15}
|
||||
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
\renewcommand{\solutiontitle}{\noindent\textbf{L\"osung:}\par\noindent}
|
||||
\renewcommand{\solutiontitle}{\noindent\textbf{Solution:}\par\noindent}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{document}
|
||||
|
||||
\vspace*{-6.5ex}
|
||||
\begin{center}
|
||||
\textbf{\Large Einf\"uhrung in die wissenschaftliche Datenverarbeitung}\\[1ex]
|
||||
\textbf{\Large Introduction to scientific computing}\\[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}
|
||||
|
||||
\begin{questions}
|
||||
\question Stellt die zeitabh\"angige Feuerrate eines Neurons
|
||||
dar. Diese soll mit der Faltungsmethode bestimmt werden. Verwendet
|
||||
den Datensatz \code{lifoustim.mat}. Dieser enth\"at drei Variablen:
|
||||
1. die Spikezeiten, 2. den Stimulus und 3. die zeitliche
|
||||
Aufl\"osung. Die Dauer eines Trials betr\"agt 30 Sekunden.
|
||||
\question Estimate the time-dependent firing rate of a neuron. Use
|
||||
the ``convoluion'' method to do it. The dataset \code{lifoustim.mat}
|
||||
contains three variables. 1st the spike times in different trials,
|
||||
2nd the stimulus, and 3rd the temporal resolution. The total
|
||||
duration of each trial amounts to 30 seconds.
|
||||
|
||||
\begin{parts}
|
||||
\part Schreibt eine Funktion, die einen Vektor mit Spikezeiten,
|
||||
die Dauer des Trials, und die zeitliche Aufl\"osung entgegennimmt
|
||||
und die Zeitachse sowie die Feuerrate zur\"uckgibt.
|
||||
\part Benutzt diese Funktion in einem Skript und stellt die Feuerrate
|
||||
eines einzelnen Trials sowie den Mittelwert \"uber alle Trials
|
||||
dar.
|
||||
\part Erweitert das Programm so, dass die Abbildung den Richtlinien
|
||||
des \textit{Journal of Neuroscience} entspricht
|
||||
(Schriftgr\"o{\ss}e, Abbildungsgr\"o{\ss}e).
|
||||
\part Die Abbildung sollte als pdf gespeichert werden.
|
||||
\part{} Write a function that estimates the firing rate with the
|
||||
``convolution'' method. This function should take four input
|
||||
arguments: (i) a vector of spike times, (ii) the temporal
|
||||
resolution of the recording, (iii) the duration of the
|
||||
trial, and (iv) the standard deviation of the applied Gaussian
|
||||
kernel. The function should return two variables: (i) the firing
|
||||
rate, and (ii) a vector representing time.
|
||||
\part{} Write a script that uses this function to estimate the
|
||||
firing rate of all trial. Plot the mean (across trials) firing
|
||||
rate as a function of time. Use two different kernel standard
|
||||
deviations (e.g. 20\,ms and 100\,ms).
|
||||
\part{} Save the figure according the style defined by the
|
||||
\emph{J. Neuroscience} (figure width 1, 1.5, or two columns, 8.5,
|
||||
11.6, or 17.6\,cm, respectively; fontsize 10 pt). Save the figure
|
||||
as pdf.
|
||||
\end{parts}
|
||||
|
||||
\question In einer vorherigen \"Ubung wurde die Korrelation zwischen
|
||||
einer Reihe von Messungen und einer entsprechenden Anzahl
|
||||
unabh\"angiger Variablen bestimmt (Kapitel 4.4 im Skript). Wir
|
||||
k\"onnen diese Korrelation benutzen um den Zusammenhang zwischen
|
||||
Stimulus und Antwort zu bestimmen.
|
||||
\question In a previous exercise you were asked to estimate the
|
||||
correlation between a set of independent variables and the
|
||||
respective measurements (Chapter 6.4 in the script). We can use
|
||||
this function to learn a few things about the relation between
|
||||
stimulus and response.
|
||||
|
||||
\begin{parts}
|
||||
\part Ermittelt die zeitabh\"angige Feuerrate mit einer der drei
|
||||
Methoden und korrelliert sie mit dem Stimulus.
|
||||
\part Verschiebt nun den Stimulus relativ zur Antwort um $\pm$
|
||||
50\,ms in 1\,ms Schritten und berechnet f\"ur jede Verschiebung
|
||||
die Korrelation.
|
||||
\part Stellt die so berechnete Kreuzkorrelation graphisch dar
|
||||
(x-Achse die Verschiebung, y-Achse der Korrelationskoeffizient).
|
||||
\part Was ist die maximale Korrelation und bei welcher
|
||||
Verschiebung kommt sie vor?
|
||||
\part Was k\"onnte uns die Breite des Korrelationspeaks sagen?
|
||||
\part{} Estimate the firing rate of the neuronal response using one
|
||||
of the three methods. Use the same dataset as before.
|
||||
\part{} Calculate the correlation of stimulus and response.
|
||||
\part{} Calculate the correlation of stimulus and response
|
||||
while shifting the response relative to the stimulus in a range
|
||||
$\pm$ 50\,ms (1\,ms steps).
|
||||
\part{} Plot these correlations as a function of the temporal shift
|
||||
(often called lag).
|
||||
\part{} What is the maximum correlation and at which lag does it occur?
|
||||
\part{} What could this tell us about the neuronal response properties?
|
||||
\end{parts}
|
||||
\end{questions}
|
||||
|
||||
|
Reference in New Issue
Block a user