Updated statistics chapter
This commit is contained in:
parent
be13ea7610
commit
3216086642
3
Makefile
3
Makefile
@ -1,6 +1,7 @@
|
||||
BASENAME=scientificcomputing-script
|
||||
|
||||
SUBDIRS=programming statistics bootstrap likelihood pointprocesses spike_trains designpattern
|
||||
SUBDIRS=programming statistics bootstrap likelihood pointprocesses
|
||||
#spike_trains designpattern
|
||||
# regression
|
||||
|
||||
pdf : $(BASENAME).pdf
|
||||
|
18
header.tex
18
header.tex
@ -28,7 +28,12 @@
|
||||
%%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{subcaption}
|
||||
\usepackage{graphicx}
|
||||
|
||||
%%%%%%%%%%%%% Colors %%%%%%%%%%%%%%%%
|
||||
\usepackage{xcolor}
|
||||
\definecolor{lightblue}{rgb}{.7,.7,1.}
|
||||
\definecolor{mygreen}{rgb}{0.2,0.7,0.2}
|
||||
\definecolor{myred}{rgb}{1.,0,0}
|
||||
\pagecolor{white}
|
||||
|
||||
%%%%% figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
@ -149,6 +154,9 @@
|
||||
belowskip=2ex
|
||||
}
|
||||
|
||||
%%%%%%%%%%%%% Table stuff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{multirow}
|
||||
|
||||
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{amsmath}
|
||||
\usepackage{bm}
|
||||
@ -203,13 +211,3 @@
|
||||
{\addtocounter{lstlisting}{-1}\lstinputlisting[language={},title={\textbf{\tr{Output}{Ausgabe}:}},belowskip=0pt]{\codepath\exerciseoutput}}}}%
|
||||
\endMakeFramed\stepcounter{theexercise}%
|
||||
\renewcommand{\theenumi}{\saveenumi}}
|
||||
|
||||
%%%%%%%%%%%%% Table stuff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{multirow}
|
||||
|
||||
|
||||
%%%%%%%%%%%%% Colors %%%%%%%%%%%%%%%%
|
||||
\usepackage{xcolor}
|
||||
\definecolor{lightblue}{rgb}{.7,.7,1.}
|
||||
\definecolor{mygreen}{rgb}{0.2,0.7,0.2}
|
||||
\definecolor{myred}{rgb}{1.,0,0}
|
@ -1,20 +1,31 @@
|
||||
TEXFILES=$(wildcard *.tex)
|
||||
TEXFILES=boolean_logical_indexing.tex control_structures.tex data_structures.tex plotting.tex programming_basics.tex scripts_functions.tex sta_stc.tex variables_datatypes.tex vectors_matrices.tex
|
||||
BASENAME=programming
|
||||
|
||||
PDFFILES=$(TEXFILES:.tex=.pdf)
|
||||
#TEXFILES=boolean_logical_indexing.tex control_structures.tex data_structures.tex plotting.tex programming_basics.tex scripts_functions.tex sta_stc.tex variables_datatypes.tex vectors_matrices.tex
|
||||
|
||||
pdf : $(PDFFILES)
|
||||
PYFILES=$(wildcard *.py)
|
||||
PYPDFFILES=$(PYFILES:.py=.pdf)
|
||||
|
||||
$(PDFFILES) : %.pdf : %.tex
|
||||
all : pdf
|
||||
|
||||
# script:
|
||||
pdf : $(BASENAME)-chapter.pdf
|
||||
|
||||
$(BASENAME)-chapter.pdf : $(BASENAME)-chapter.tex $(BASENAME).tex $(PYPDFFILES)
|
||||
pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true
|
||||
|
||||
$(PYPDFFILES) : %.pdf : %.py
|
||||
python $<
|
||||
|
||||
clean :
|
||||
rm -f *~ $(TEXFILES:.tex=.aux) $(TEXFILES:.tex=.log) $(TEXFILES:.tex=.out) $(TEXFILES:.tex=.nav) $(TEXFILES:.tex=.snm) $(TEXFILES:.tex=.toc) $(TEXFILES:.tex=.vrb)
|
||||
rm -f *~
|
||||
rm -f $(BASENAME).aux $(BASENAME).log
|
||||
rm -f $(BASENAME)-chapter.aux $(BASENAME)-chapter.log $(BASENAME)-chapter.out
|
||||
rm -f $(PYPDFFILES) $(GPTTEXFILES)
|
||||
|
||||
cleanall : clean
|
||||
rm -f $(PDFFILES)
|
||||
rm -f $(BASENAME)-chapter.pdf
|
||||
|
||||
watch :
|
||||
watchpdf :
|
||||
while true; do ! make -q pdf && make pdf; sleep 0.5; done
|
||||
|
||||
|
||||
|
@ -1,372 +1,17 @@
|
||||
\documentclass[12pt]{report}
|
||||
|
||||
%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\title{\tr{Introduction to Scientific Computing}{Einf\"uhrung in die wissenschaftliche Datenverarbeitung}}
|
||||
\author{Jan Benda\\Abteilung Neuroethologie\\[2ex]\includegraphics[width=0.3\textwidth]{UT_WBMW_Rot_RGB}}
|
||||
\date{WS 15/16}
|
||||
\input{../../header}
|
||||
|
||||
%%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% \newcommand{\tr}[2]{#1} % en
|
||||
% \usepackage[english]{babel}
|
||||
\newcommand{\tr}[2]{#2} % de
|
||||
\usepackage[german]{babel}
|
||||
\lstset{inputpath=../code}
|
||||
|
||||
%%%%% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{pslatex} % nice font for pdf file
|
||||
\usepackage[breaklinks=true,bookmarks=true,bookmarksopen=true,pdfpagemode=UseNone,pdfstartview=FitH,colorlinks=true,citecolor=blue]{hyperref}
|
||||
|
||||
%%%% layout %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[left=25mm,right=25mm,top=20mm,bottom=30mm]{geometry}
|
||||
\setcounter{tocdepth}{1}
|
||||
|
||||
%%%%% section style %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[sf,bf,it,big,clearempty]{titlesec}
|
||||
\setcounter{secnumdepth}{1}
|
||||
|
||||
|
||||
%%%%% units %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage[mediumspace,mediumqspace,Gray]{SIunits} % \ohm, \micro
|
||||
|
||||
|
||||
%%%%% figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{subcaption}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{xcolor}
|
||||
\pagecolor{white}
|
||||
|
||||
\newcommand{\ruler}{\par\noindent\setlength{\unitlength}{1mm}\begin{picture}(0,6)%
|
||||
\put(0,4){\line(1,0){170}}%
|
||||
\multiput(0,2)(10,0){18}{\line(0,1){4}}%
|
||||
\multiput(0,3)(1,0){170}{\line(0,1){2}}%
|
||||
\put(0,0){\makebox(0,0){{\tiny 0}}}%
|
||||
\put(10,0){\makebox(0,0){{\tiny 1}}}%
|
||||
\put(20,0){\makebox(0,0){{\tiny 2}}}%
|
||||
\put(30,0){\makebox(0,0){{\tiny 3}}}%
|
||||
\put(40,0){\makebox(0,0){{\tiny 4}}}%
|
||||
\put(50,0){\makebox(0,0){{\tiny 5}}}%
|
||||
\put(60,0){\makebox(0,0){{\tiny 6}}}%
|
||||
\put(70,0){\makebox(0,0){{\tiny 7}}}%
|
||||
\put(80,0){\makebox(0,0){{\tiny 8}}}%
|
||||
\put(90,0){\makebox(0,0){{\tiny 9}}}%
|
||||
\put(100,0){\makebox(0,0){{\tiny 10}}}%
|
||||
\put(110,0){\makebox(0,0){{\tiny 11}}}%
|
||||
\put(120,0){\makebox(0,0){{\tiny 12}}}%
|
||||
\put(130,0){\makebox(0,0){{\tiny 13}}}%
|
||||
\put(140,0){\makebox(0,0){{\tiny 14}}}%
|
||||
\put(150,0){\makebox(0,0){{\tiny 15}}}%
|
||||
\put(160,0){\makebox(0,0){{\tiny 16}}}%
|
||||
\put(170,0){\makebox(0,0){{\tiny 17}}}%
|
||||
\end{picture}\par}
|
||||
|
||||
% figures:
|
||||
\setlength{\fboxsep}{0pt}
|
||||
\newcommand{\texpicture}[1]{{\sffamily\footnotesize\input{#1.tex}}}
|
||||
%\newcommand{\texpicture}[1]{\fbox{\sffamily\footnotesize\input{#1.tex}}}
|
||||
%\newcommand{\texpicture}[1]{\setlength{\fboxsep}{2mm}\fbox{#1}}
|
||||
%\newcommand{\texpicture}[1]{}
|
||||
\newcommand{\figlabel}[1]{\textsf{\textbf{\large \uppercase{#1}}}}
|
||||
|
||||
% maximum number of floats:
|
||||
\setcounter{topnumber}{2}
|
||||
\setcounter{bottomnumber}{0}
|
||||
\setcounter{totalnumber}{2}
|
||||
|
||||
% float placement fractions:
|
||||
\renewcommand{\textfraction}{0.2}
|
||||
\renewcommand{\topfraction}{0.8}
|
||||
\renewcommand{\bottomfraction}{0.0}
|
||||
\renewcommand{\floatpagefraction}{0.5}
|
||||
|
||||
% spacing for floats:
|
||||
\setlength{\floatsep}{12pt plus 2pt minus 2pt}
|
||||
\setlength{\textfloatsep}{20pt plus 4pt minus 2pt}
|
||||
\setlength{\intextsep}{12pt plus 2pt minus 2pt}
|
||||
|
||||
% spacing for a floating page:
|
||||
\makeatletter
|
||||
\setlength{\@fptop}{0pt}
|
||||
\setlength{\@fpsep}{8pt plus 2.0fil}
|
||||
\setlength{\@fpbot}{0pt plus 1.0fil}
|
||||
\makeatother
|
||||
|
||||
% rules for floats:
|
||||
\newcommand{\topfigrule}{\vspace*{10pt}{\hrule height0.4pt}\vspace*{-10.4pt}}
|
||||
\newcommand{\bottomfigrule}{\vspace*{-10.4pt}{\hrule height0.4pt}\vspace*{10pt}}
|
||||
|
||||
% captions:
|
||||
\usepackage[format=plain,singlelinecheck=off,labelfont=bf,font={small,sf}]{caption}
|
||||
|
||||
% put caption on separate float:
|
||||
\newcommand{\breakfloat}{\end{figure}\begin{figure}[t]}
|
||||
|
||||
% references to panels of a figure within the caption:
|
||||
\newcommand{\figitem}[1]{\textsf{\bfseries\uppercase{#1}}}
|
||||
% references to figures:
|
||||
\newcommand{\panel}[1]{\textsf{\uppercase{#1}}}
|
||||
\newcommand{\fref}[1]{\textup{\ref{#1}}}
|
||||
\newcommand{\subfref}[2]{\textup{\ref{#1}}\,\panel{#2}}
|
||||
% references to figures in normal text:
|
||||
\newcommand{\fig}{Fig.}
|
||||
\newcommand{\Fig}{Figure}
|
||||
\newcommand{\figs}{Figs.}
|
||||
\newcommand{\Figs}{Figures}
|
||||
\newcommand{\figref}[1]{\fig~\fref{#1}}
|
||||
\newcommand{\Figref}[1]{\Fig~\fref{#1}}
|
||||
\newcommand{\figsref}[1]{\figs~\fref{#1}}
|
||||
\newcommand{\Figsref}[1]{\Figs~\fref{#1}}
|
||||
\newcommand{\subfigref}[2]{\fig~\subfref{#1}{#2}}
|
||||
\newcommand{\Subfigref}[2]{\Fig~\subfref{#1}{#2}}
|
||||
\newcommand{\subfigsref}[2]{\figs~\subfref{#1}{#2}}
|
||||
\newcommand{\Subfigsref}[2]{\Figs~\subfref{#1}{#2}}
|
||||
% references to figures within bracketed text:
|
||||
\newcommand{\figb}{Fig.}
|
||||
\newcommand{\figsb}{Figs.}
|
||||
\newcommand{\figrefb}[1]{\figb~\fref{#1}}
|
||||
\newcommand{\figsrefb}[1]{\figsb~\fref{#1}}
|
||||
\newcommand{\subfigrefb}[2]{\figb~\subfref{#1}{#2}}
|
||||
\newcommand{\subfigsrefb}[2]{\figsb~\subfref{#1}{#2}}
|
||||
|
||||
% references to tables:
|
||||
\newcommand{\tref}[1]{\textup{\ref{#1}}}
|
||||
% references to tables in normal text:
|
||||
\newcommand{\tab}{Tab.}
|
||||
\newcommand{\Tab}{Table}
|
||||
\newcommand{\tabs}{Tabs.}
|
||||
\newcommand{\Tabs}{Tables}
|
||||
\newcommand{\tabref}[1]{\tab~\tref{#1}}
|
||||
\newcommand{\Tabref}[1]{\Tab~\tref{#1}}
|
||||
\newcommand{\tabsref}[1]{\tabs~\tref{#1}}
|
||||
\newcommand{\Tabsref}[1]{\Tabs~\tref{#1}}
|
||||
% references to tables within bracketed text:
|
||||
\newcommand{\tabb}{Tab.}
|
||||
\newcommand{\tabsb}{Tab.}
|
||||
\newcommand{\tabrefb}[1]{\tabb~\tref{#1}}
|
||||
\newcommand{\tabsrefb}[1]{\tabsb~\tref{#1}}
|
||||
|
||||
|
||||
%%%%% equation references %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%\newcommand{\eqref}[1]{(\ref{#1})}
|
||||
\newcommand{\eqn}{\tr{Eq}{Gl}.}
|
||||
\newcommand{\Eqn}{\tr{Eq}{Gl}.}
|
||||
\newcommand{\eqns}{\tr{Eqs}{Gln}.}
|
||||
\newcommand{\Eqns}{\tr{Eqs}{Gln}.}
|
||||
\newcommand{\eqnref}[1]{\eqn~\eqref{#1}}
|
||||
\newcommand{\Eqnref}[1]{\Eqn~\eqref{#1}}
|
||||
\newcommand{\eqnsref}[1]{\eqns~\eqref{#1}}
|
||||
\newcommand{\Eqnsref}[1]{\Eqns~\eqref{#1}}
|
||||
|
||||
|
||||
%%%%% listings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{listings}
|
||||
\lstset{
|
||||
inputpath=../code,
|
||||
basicstyle=\ttfamily\footnotesize,
|
||||
numbers=left,
|
||||
showstringspaces=false,
|
||||
language=Matlab,
|
||||
commentstyle=\itshape\color{red!60!black},
|
||||
keywordstyle=\color{blue!50!black},
|
||||
stringstyle=\color{green!50!black},
|
||||
backgroundcolor=\color{blue!10},
|
||||
breaklines=true,
|
||||
breakautoindent=true,
|
||||
columns=flexible,
|
||||
frame=single,
|
||||
caption={\protect\filename@parse{\lstname}\protect\filename@base},
|
||||
captionpos=t,
|
||||
xleftmargin=1em,
|
||||
xrightmargin=1em,
|
||||
aboveskip=10pt
|
||||
}
|
||||
|
||||
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{amsmath}
|
||||
\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}}
|
||||
|
||||
|
||||
%%%%% structure: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\usepackage{ifthen}
|
||||
|
||||
\newcommand{\code}[1]{\texttt{#1}}
|
||||
|
||||
\newcommand{\source}[1]{
|
||||
\begin{flushright}
|
||||
\color{gray}\scriptsize \url{#1}
|
||||
\end{flushright}
|
||||
}
|
||||
|
||||
\newenvironment{definition}[1][]{\medskip\noindent\textbf{Definition}\ifthenelse{\equal{#1}{}}{}{ #1}:\newline}%
|
||||
{\medskip}
|
||||
|
||||
\newcounter{maxexercise}
|
||||
\setcounter{maxexercise}{9} % show listings up to exercise maxexercise
|
||||
\newcounter{theexercise}
|
||||
\setcounter{theexercise}{1}
|
||||
\newenvironment{exercise}[1][]{\medskip\noindent\textbf{\tr{Exercise}{\"Ubung}
|
||||
\arabic{theexercise}:}\newline \newcommand{\exercisesource}{#1}}%
|
||||
{\ifthenelse{\equal{\exercisesource}{}}{}{\ifthenelse{\value{theexercise}>\value{maxexercise}}{}{\medskip\lstinputlisting{\exercisesource}}}\medskip\stepcounter{theexercise}}
|
||||
|
||||
\graphicspath{{figures/}}
|
||||
\graphicspath{{images/}}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\begin{document}
|
||||
|
||||
\chapter{Grundlagen der Programmierung in Matlab}
|
||||
|
||||
|
||||
\include{variables_datatypes}
|
||||
|
||||
|
||||
\include{vectors_matrices}
|
||||
|
||||
|
||||
\include{control_structures}
|
||||
|
||||
\include{programming}
|
||||
|
||||
\end{document}
|
||||
|
||||
|
||||
\end{document}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Statistics}
|
||||
What is "a statistic"? % dt. Sch\"atzfunktion
|
||||
\begin{definition}[statistic]
|
||||
A statistic (singular) is a single measure of some attribute of a
|
||||
sample (e.g., its arithmetic mean value). It is calculated by
|
||||
applying a function (statistical algorithm) to the values of the
|
||||
items of the sample, which are known together as a set of data.
|
||||
|
||||
\source{http://en.wikipedia.org/wiki/Statistic}
|
||||
\end{definition}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{Data types}
|
||||
|
||||
\subsection{Nominal scale}
|
||||
\begin{itemize}
|
||||
\item Binary
|
||||
\begin{itemize}
|
||||
\item ``yes/no'',
|
||||
\item ``true/false'',
|
||||
\item ``success/failure'', etc.
|
||||
\end{itemize}
|
||||
\item Categorial
|
||||
\begin{itemize}
|
||||
\item cell type (``rod/cone/horizontal cell/bipolar cell/ganglion cell''),
|
||||
\item blood type (``A/B/AB/0''),
|
||||
\item parts of speech (``noun/veerb/preposition/article/...''),
|
||||
\item taxonomic groups (``Coleoptera/Lepidoptera/Diptera/Hymenoptera''), etc.
|
||||
\end{itemize}
|
||||
\item Each observation/measurement/sample is put into one category
|
||||
\item There is no reasonable order among the categories.\\
|
||||
example: [rods, cones] vs. [cones, rods]
|
||||
\item Statistics: mode, i.e. the most common item
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Ordinal scale}
|
||||
\begin{itemize}
|
||||
\item Like nominal scale, but with an order
|
||||
\item Examples: ranks, ratings
|
||||
\begin{itemize}
|
||||
\item ``bad/ok/good'',
|
||||
\item ``cold/warm/hot'',
|
||||
\item ``young/old'', etc.
|
||||
\end{itemize}
|
||||
\item {\bf But:} there is no reasonable measure of {\em distance}
|
||||
between the classes
|
||||
\item Statistics: mode, median
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Interval scale}
|
||||
\begin{itemize}
|
||||
\item Quantitative/metric values
|
||||
\item Reasonable measure of distance between values, but no absolute zero
|
||||
\item Examples:
|
||||
\begin{itemize}
|
||||
\item Temperature in $^\circ$C ($20^\circ$C is not twice as hot as $10^\circ$C)
|
||||
\item Direction measured in degrees from magnetic or true north
|
||||
\end{itemize}
|
||||
\item Statistics:
|
||||
\begin{itemize}
|
||||
\item Central tendency: mode, median, arithmetic mean
|
||||
\item Dispersion: range, standard deviation
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Absolute/ratio scale}
|
||||
\begin{itemize}
|
||||
\item Like interval scale, but with absolute origin/zero
|
||||
\item Examples:
|
||||
\begin{itemize}
|
||||
\item Temperature in $^\circ$K
|
||||
\item Length, mass, duration, electric charge, ...
|
||||
\item Plane angle, etc.
|
||||
\item Count (e.g. number of spikes in response to a stimulus)
|
||||
\end{itemize}
|
||||
\item Statistics:
|
||||
\begin{itemize}
|
||||
\item Central tendency: mode, median, arithmetic, geometric, harmonic mean
|
||||
\item Dispersion: range, standard deviation
|
||||
\item Coefficient of variation (ratio standard deviation/mean)
|
||||
\item All other statistical measures
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Data types}
|
||||
\begin{itemize}
|
||||
\item Data type selects
|
||||
\begin{itemize}
|
||||
\item statistics
|
||||
\item type of plots (bar graph versus x-y plot)
|
||||
\item correct tests
|
||||
\end{itemize}
|
||||
\item Scales exhibit increasing information content from nominal
|
||||
to absolute.\\
|
||||
Conversion ,,downwards'' is always possible
|
||||
\item For example: size measured in meter (ratio scale) $\rightarrow$
|
||||
categories ``small/medium/large'' (ordinal scale)
|
||||
\end{itemize}
|
||||
|
||||
\subsection{Examples from neuroscience}
|
||||
\begin{itemize}
|
||||
\item {\bf absolute:}
|
||||
\begin{itemize}
|
||||
\item size of neuron/brain
|
||||
\item length of axon
|
||||
\item ion concentration
|
||||
\item membrane potential
|
||||
\item firing rate
|
||||
\end{itemize}
|
||||
|
||||
\item {\bf interval:}
|
||||
\begin{itemize}
|
||||
\item edge orientation
|
||||
\end{itemize}
|
||||
|
||||
\item {\bf ordinal:}
|
||||
\begin{itemize}
|
||||
\item stages of a disease
|
||||
\item ratings
|
||||
\end{itemize}
|
||||
|
||||
\item {\bf nominal:}
|
||||
\begin{itemize}
|
||||
\item cell type
|
||||
\item odor
|
||||
\item states of an ion channel
|
||||
\end{itemize}
|
||||
|
||||
\end{itemize}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\chapter{\tr{Programming basics}{Grundlagen der Programmierung in Matlab}}
|
||||
\chapter{\tr{Programming basics}{Grundlagen der Programmierung in \matlab}}
|
||||
|
||||
\section{Variablen und Datentypen}
|
||||
|
||||
@ -8,13 +8,13 @@
|
||||
|
||||
Eine Variable ist ein Zeiger auf eine Stelle im Speicher. Dieser
|
||||
Zeiger hat einen Namen, den Variablennamen, und einen Datentyp
|
||||
(Abbildung \ref{variablefig}).Im Speicher wird der Wert der Variablen
|
||||
(Abbildung \ref{variablefig}). Im Speicher wird der Wert der Variablen
|
||||
bin\"ar gespeichert. Wird auf den Wert der Variable zugegriffen, wird
|
||||
dieses Bitmuster je nach Datentyp interpretiert. Das Beispiel in
|
||||
Abbildung \ref{variablefig} zeigt, dass das gleiche Bitmuster im einen
|
||||
Fall als 8-Bit Integer Datentyp zur Zahl 38 interpretiert wird und im
|
||||
anderen Fall als Character zum kaufm\"annischen ``und'' ausgewertet
|
||||
wird. In Matlab sind Datentypen nicht von sehr zentraler
|
||||
wird. In \matlab{} sind Datentypen nicht von sehr zentraler
|
||||
Bedeutung. Wir werden uns dennoch sp\"ater etwas genauer mit ihnen
|
||||
befassen.
|
||||
|
||||
@ -37,10 +37,9 @@ befassen.
|
||||
|
||||
|
||||
\subsection{Erzeugen von Variablen}
|
||||
In Matlab kann eine Variable auf der Kommandozeile, in einem Skript
|
||||
In \matlab{} kann eine Variable auf der Kommandozeile, in einem Skript
|
||||
oder einer Funktion an beliebiger Stelle erzeugen. Das folgende
|
||||
Listing zeigt zwei M\"oglichkeiten:
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=varListing1, caption=Erzeugen von Variablen]
|
||||
>> y = []
|
||||
y =
|
||||
@ -50,26 +49,23 @@ y =
|
||||
x =
|
||||
38
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Die Zeile 1 kann etwa so gelesen werden:''Erzeuge eine Variable mit
|
||||
dem Namen y und weise ihr einen leeren Wert zu.'' Das
|
||||
Gleichheitszeichen ist der sogenannte
|
||||
\textit{Zuweisungsoperator}. Zeile 5 definiert eine Variable x, der
|
||||
nun der Zahlenwert 38 zugewiesen wird. Da Matlab, wenn nicht anders
|
||||
nun der Zahlenwert 38 zugewiesen wird. Da \matlab{}, wenn nicht anders
|
||||
angegeben immer den ``double'' Datentypen benutzt, haben beide
|
||||
Variablen diesen Datentyp.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=varListing2, caption={Erfragen des Datentyps einer Variable, Listen aller definierten Variablen.}]
|
||||
>>disp(class(x))
|
||||
double
|
||||
>>
|
||||
>> who % oder whos um mehr Information zu bekommen
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Bei der Namensgebung ist zu beachten, dass Matlab auf Gro{\ss}- und
|
||||
Bei der Namensgebung ist zu beachten, dass \matlab{} auf Gro{\ss}- und
|
||||
Kleinschreibung achtet und ein Variablennane mit einem alphabethischen
|
||||
Zeichen beginnen muss. Des Weiteren sind Umlaute, Sonder- und
|
||||
Leerzeichen in Variablennamen nicht erlaubt.
|
||||
@ -77,12 +73,11 @@ Leerzeichen in Variablennamen nicht erlaubt.
|
||||
|
||||
\subsection{Arbeiten mit Variablen}
|
||||
|
||||
Nat\"urlich kann man mit den Variablen auch arbeiten, bzw
|
||||
rechnen. Matlab kennt alle normalen arithmetischen Operatoren wie
|
||||
Nat\"urlich kann mit den Variablen auch gearbeitet, bzw
|
||||
gerechnet werden. \matlab{} kennt alle normalen arithmetischen Operatoren wie
|
||||
\code{+, -, *. /}. Die Potenz wird \"uber das Dach Symbol \code{\^}
|
||||
dargestellt. Das folgende Listing zeigt, wie sie benutzt werden.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}]
|
||||
>> x = 1;
|
||||
>> x + 10
|
||||
@ -110,12 +105,11 @@ z =
|
||||
>>
|
||||
>> clear z
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Beachtenswert ist z.B. in Zeilen 3 und 6, dass wir mit dem Inhalt
|
||||
einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert
|
||||
ver\"andert w\"urde. Wenn der Wert einer Variablen ver\"andert werden
|
||||
soll, dann muss dieser der Variable expliyit zugewiesen werden (mit
|
||||
ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden
|
||||
soll, dann muss dieser der Variable explizit zugewiesen werden (mit
|
||||
dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt
|
||||
wie eine einzelne Variable gel\"oscht wird.
|
||||
|
||||
@ -127,8 +121,8 @@ interpretiert werden. Die Wichtigsten Datentpyen sind folgende:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textit{integer} - Ganze Zahlen. Hier gibt es mehrere
|
||||
Unterarten, die wir in Matlab (meist) ignorieren k\"onnen.
|
||||
\item \textit{double} - Flie{\ss}kommazahlen.
|
||||
Unterarten, die wir in \matlab{} (meist) ignorieren k\"onnen.
|
||||
\item \textit{double} - Flie{\ss}kommazahlen. Im Gegensatz zu den reelen Zahlen, die durch diesen Datentyp dargestellt werden, sind sie abz\"ahlbar.
|
||||
\item \textit{complex} - Komplexe Zahlen.
|
||||
\item \textit{logical} - Boolesche Werte, die als wahr
|
||||
(\textit{true}) oder falsch (\textit{false}) interpretiert werden.
|
||||
@ -142,18 +136,18 @@ unterschiedlichem Speicherbedarf und Wertebreich.
|
||||
\centering
|
||||
\caption{Gel\"aufige Datentypen und ihr Wertebereich.}
|
||||
\label{dtypestab}
|
||||
\begin{tabular}{l|l|c|cl}
|
||||
Datentyp & Speicherbedarf & Wertebereich & Beispiel \\ \cline{1-4}
|
||||
double & 64 bit & & Flie{\ss}kommazahlen.\\ \cline{1-4}
|
||||
int & 64 bit & $-2^{31} bis 2^{31}-1$ & Ganzzahlige Werte \\ \cline{1-4}
|
||||
int16 & 64 bit & $-2^{15} bis 2^{15}-1$ & Digitalisierte Spannungen. \\ \cline{1-4}
|
||||
uint8 & 64 bit & 0 bis 255 & Digitalisierte Imaging Daten. \\ \cline{1-4}
|
||||
& & &
|
||||
\begin{tabular}{llcl}
|
||||
\hline
|
||||
Datentyp & Speicherbedarf & Wertebereich & Beispiel \rule{0pt}{2.5ex} \\ \hline
|
||||
double & 64 bit & $\approx -10^{308}$ bis $\approx 10^{308}$ & Flie{\ss}kommazahlen \rule{0pt}{2.5ex}\\
|
||||
int & 64 bit & $-2^{31}$ bis $2^{31}-1$ & Ganzzahlige Werte \\
|
||||
int16 & 64 bit & $-2^{15}$ bis $2^{15}-1$ & Digitalisierte Spannungen. \\
|
||||
uint8 & 64 bit & $0$ bis $255$ & Digitalisierte Imaging Daten. \\ \hline
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
|
||||
Matlab arbeitet meist mit dem ``double'' Datentyp wenn numerische
|
||||
\matlab{} arbeitet meist mit dem ``double'' Datentyp wenn numerische
|
||||
Daten gespeichert werden. Dennoch lohnt es sich, sich ein wenig mit
|
||||
den Datentypen auseinanderzusetzen. Ein Szenario, dass in der
|
||||
Neurobiologie nicht selten ist, ist, dass wir die elektrische
|
||||
@ -161,54 +155,50 @@ Aktivit\"at einer Nervenzelle messen. Die gemessenen Spannungen werden
|
||||
mittels Messkarte digitalisiert und auf dem Rechner
|
||||
gespeichert. Typischerweise k\"onnen mit solchen Messkarten Spannungen
|
||||
im Bereich $\pm 10$\,V gemessen werden. Die Aufl\"osung der Wandler
|
||||
betr\"agt typischerweise 16 bit. Das heisst, dass der gesamte
|
||||
betr\"agt heutzutage meistens 16 bit. Das heisst, dass der gesamte
|
||||
Spannungsbereich in $2^{16}$ Schritte aufgeteilt ist. Um Speicherplatz
|
||||
zu sparen ist es sinnvoll, die gemessenen Daten als ``int16'' Werte im
|
||||
zu sparen w\"are es sinnvoll, die gemessenen Daten als ``int16'' Werte im
|
||||
Rechner abzulegen. Die Daten als ``echte'' Spannungen, also als
|
||||
Flie{\ss}kommawerte, abzulegen w\"urde den 4-fachen Speicherplatz
|
||||
ben\"otigen.
|
||||
|
||||
|
||||
|
||||
\section{Vektoren und Matrizen}
|
||||
|
||||
\begin{definition}[Vektoren und Matrizen]
|
||||
%\begin{definition}[Vektoren und Matrizen]
|
||||
Vektoren und Matrizen sind die wichtigsten Datenstrukturen in
|
||||
Matlab. In andern Programmiersprachen spricht man von ein-
|
||||
\matlab. In anderen Programmiersprachen spricht man von ein-
|
||||
bzw. mehrdimensionalen Feldern. Felder sind Datenstrukturen, die
|
||||
mehrere Werte des geleichen Datentyps in einer Variablen
|
||||
vereinen. Da Matalb seinen Ursprung in der Verarbeitung von
|
||||
mathematischen Vektoren und Matrizen hat werden sie hier auch so
|
||||
genannt.\\
|
||||
mathematischen Vektoren und Matrizen hat, werden sie hier auch so
|
||||
genannt.
|
||||
|
||||
In Wahrheit existiert auch in Matlab kein Unterschied zwischen
|
||||
beiden Datenstrukturen. Im Hintergrund sind auch Vektoren
|
||||
2-diemsensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e 1
|
||||
\matlab{} macht keinen Unterschied zwischen Vektoren und Matrizen.
|
||||
Vektoren sind 2-dimsensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e 1
|
||||
hat.
|
||||
\end{definition}
|
||||
%\end{definition}
|
||||
|
||||
|
||||
\subsection{Vektoren}
|
||||
|
||||
Im Gegensatz zu den Variablen, die einzelene Werte beinhalten,
|
||||
Skalare, kann ein Vektor mehrere Werte des gleichen Datentyps
|
||||
Im Gegensatz zu Variablen, die einzelene Werte beinhalten
|
||||
(Skalare), kann ein Vektor mehrere Werte des gleichen Datentyps
|
||||
beinhalten (Abbildung \ref{vectorfig} B). Die Variable ``test''
|
||||
enth\"alt in diesem Beispiel vier ganzzahlige Werte.
|
||||
|
||||
|
||||
\begin{figure}
|
||||
\includegraphics[width=0.8\columnwidth]{scalarArray}
|
||||
\caption{\textbf{Skalare und Vektoren. A)} Eine skalare Variable kann
|
||||
genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer
|
||||
Werte des gleichen Datentyps (z.B. ganzzahlige Integer Werte)
|
||||
beinhalten. Matlab kennt den Zeilen- (row-) und Spaltenvektor
|
||||
beinhalten. \matlab{} kennt den Zeilen- (row-) und Spaltenvektor
|
||||
(columnvector).}\label{vectorfig}
|
||||
\end{figure}
|
||||
|
||||
Das folgende Listing zeigt, wie einfache Vektoren erstellt werden
|
||||
k\"onnen.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=arrayListing1, caption={Erstellen einfacher Zeilenvektoren.}]
|
||||
>> a = [0 1 2 3 4 5 6 7 8 9] % Erstellen eines Zeilenvektors
|
||||
a =
|
||||
@ -222,14 +212,12 @@ k\"onnen.
|
||||
c =
|
||||
0 2 4 6 8 10
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Die L\"ange eines Vektors kann mithilfe der Funktion \code{length()}
|
||||
bestimmt werden. \"Ahnliche Information kann man \"uber die Funktion
|
||||
\code{size()} erhalten. Im Falle des Vektors \code{a} von oben erh\"alt
|
||||
man folgende Ausgabe:
|
||||
Die L\"ange eines Vektors, d.h. die Anzahl der Elemente des Vektors,
|
||||
kann mithilfe der Funktion \code{length()} bestimmt werden. \"Ahnliche
|
||||
Information kann \"uber die Funktion \code{size()} erhalten werden. Im
|
||||
Falle des Vektors \code{a} von oben erh\"alt man folgende Ausgabe:
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}]
|
||||
>> length(a)
|
||||
ans =
|
||||
@ -238,19 +226,17 @@ ans =
|
||||
ans =
|
||||
1 10
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei
|
||||
einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
|
||||
1. \code{length(a)} gibt die l\"angste Ausdehnung an.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=arrayListing3, caption={Spaltenvektoren.}]
|
||||
>> b = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] % Erstellen eines Spaltenvektors
|
||||
b =
|
||||
1
|
||||
2
|
||||
....
|
||||
...
|
||||
9
|
||||
10
|
||||
>> length(b)
|
||||
@ -278,14 +264,13 @@ Zeilenvektor.
|
||||
|
||||
Der Zugriff auf die Inhalte eines Vektors erfolgt \"uber den Index
|
||||
(Abbildung \ref{vectorindexingfig}). Jedes Feld in einem Vektor hat
|
||||
einen \textit{Index} \"uber den auf die Werte des Vektors zugegriffen
|
||||
werden kann. Dabei spielt es keine Rolle, ob es sich um einen Zeilen-
|
||||
oder Spaltenvektor handlet. \textbf{Achtung!} Anders als viele andere
|
||||
Sprachen beginnt Matlab mit dem Index 1. Die Listings
|
||||
\ref{arrayListing4} und \ref{arrayListing5} zeigen wie man mit dem
|
||||
Index auf die Inhalte zugreifen kann.
|
||||
|
||||
\footnotesize
|
||||
einen fortlaufenden \textit{Index}, \"uber den auf die Werte des
|
||||
Vektors zugegriffen werden kann. Dabei spielt es keine Rolle, ob es
|
||||
sich um einen Zeilen- oder Spaltenvektor handelt. \textbf{Achtung!}
|
||||
Anders als viele andere Sprachen beginnt \matlab{} mit dem Index
|
||||
1. Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie
|
||||
man mit dem Index auf die Inhalte zugreifen kann.
|
||||
|
||||
\begin{lstlisting}[label=arrayListing4, caption={Zugriff auf den Inhalt von Vektoren I}]
|
||||
>> a = (11:20);
|
||||
>> a(1) % das 1. Element
|
||||
@ -298,42 +283,34 @@ ans =
|
||||
ans =
|
||||
20
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Hierbei kann man auf einzelne Werte zugreifen oder, analog zur
|
||||
Erzeugung von Vektoren, die \code{:} Notation verwenden um auf mehrere
|
||||
Hierbei kann auf einzelne Werte zugegriffen werden oder, analog zur
|
||||
Erzeugung von Vektoren, die \code{:} Notation verwendet werden, um auf mehrere
|
||||
Element gleichzeitig zuzugreifen.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[caption={Zugriff auf den Inhalt von Vektoren I}, label=arrayListing5]
|
||||
>> a([1 3 5]) % das 1., 3. und 5. Element
|
||||
ans =
|
||||
11 13 15
|
||||
>> a(2:4) % alle element von Index 2 bis 4
|
||||
>> a(2:4) % alle Elemente von Index 2 bis einschliesslich 4
|
||||
ans =
|
||||
12 13 14
|
||||
>> a(1:2:end) %jedes zweite Element
|
||||
ans =
|
||||
11 13 15 17 19
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
\paragraph{Frage:}
|
||||
\begin{exercise}{vectorsize.m}{}
|
||||
Der R\"uckgabewert von \code{size(a)} ist wieder ein Vektor der
|
||||
L\"ange 2. Wie k\"onnte man also die Gr\"o{\ss}e von \code{a} in der
|
||||
zweiten Dimension herausfinden?
|
||||
|
||||
\paragraph{Antwort:}
|
||||
Man speichert den R\"uckgabewert in einer Variable (\code{s = size(a);})
|
||||
und gibt den Inhalt an der Stelle 2 aus (\code{disp(s(2))}).
|
||||
|
||||
\end{exercise}
|
||||
|
||||
\subsubsection{Operationen auf Vektoren}
|
||||
|
||||
Nat\"urlich kann man mit Vektoren auch rechnen. Listing
|
||||
Mit Vektoren kann sehr einfach gerechnet werden. Listing
|
||||
\ref{arrayListing5} zeigt Rechnungen mit Vektoren.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[caption={Rechnen mit Vektoren.},label=arrayListing5]
|
||||
>> a = (0:2:8);
|
||||
>> a + 5 % addiere einen Skalar
|
||||
@ -360,29 +337,27 @@ ans =
|
||||
??? Error using ==> plus
|
||||
Matrix dimensions must agree.
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Wird ein Vektor mit einem skalaren Wert verrechnet, dann ist das
|
||||
Problemlos m\"oglich. Bei der Multiplikation (Zeile 10), der Division
|
||||
(Zeile 14) und auch der Potenzierung sollte man mit vorangestellem '.'
|
||||
klar machen, dass es sich um einen \textit{elementweise} Verarbeitung
|
||||
handelt. F\"ur diese elementweisen Operationen kennt Matlab die
|
||||
Operatoren \code{.*, ./} und \code{.\^}. Die einfachen Operatoren sind
|
||||
im Kontext von Vektoren und Matrizen anders belegt, als man es
|
||||
vielleicht erwarten w\"urde. Es sind dann die entsprechenden
|
||||
Matrixoperationen, die man aus der linearen Algebrar kennt (s.u.).
|
||||
|
||||
Zu Beachten ist des Weiteren noch die Fehlermeldung am SChluss von
|
||||
problemlos m\"oglich. Bei der Multiplikation (Zeile 10), der Division
|
||||
(Zeile 14) und auch der Potenzierung mu{\ss} mit vorangestellem '.'
|
||||
klar gemacht werden, dass es sich um eine \textit{elementweise}
|
||||
Verarbeitung handeln soll. F\"ur diese elementweisen Operationen kennt
|
||||
\matlab{} die Operatoren \code{.*}, \code{./} und \code{.\^}. Die
|
||||
einfachen Operatoren \code{*}, \code{/} und \code{\^} sind mit den
|
||||
entsprechenden Matrixoperationen aus der linearen Algebrar belegt
|
||||
(s.u.).
|
||||
|
||||
Zu Beachten ist des Weiteren noch die Fehlermeldung am Schluss von
|
||||
Listing \ref{arrayListing5}. Wenn zwei Vektoren (elementweise)
|
||||
miteinander verrechnet werden sollen muss nicht nur die Anzahl Element
|
||||
übereinstimmen sondern es muss auch das Layout (Zeilen- oder
|
||||
miteinander verrechnet werden sollen, muss nicht nur die Anzahl der Elemente
|
||||
übereinstimmen, sondern es muss auch das Layout (Zeilen- oder
|
||||
Spaltenvektoren) \"ubereinstimmen.
|
||||
|
||||
|
||||
Will man Elemente aus einem Vektor entfernen, dann weist man den
|
||||
entsprechenden Zellen einen leeren Wert (\code{[]}) zu.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=arrayListing6, caption={L\"oschen von Elementen aus einem Vektor.}]
|
||||
>> a = (0:2:8);
|
||||
>> length(a)
|
||||
@ -400,17 +375,15 @@ ans =
|
||||
2
|
||||
\end{lstlisting}
|
||||
|
||||
Neben dem L\"oschen von Vektorinhalten kann man Vektoren auch
|
||||
erweitern oder zusammensetzen. Auch hier muss das Layout der Vektoren
|
||||
Neben dem L\"oschen von Vektorinhalten k\"onnen Vektoren auch
|
||||
erweitert oder zusammengesetzt werden. Auch hier muss das Layout der Vektoren
|
||||
\"ubereinstimmen (Listing \ref{arrayListing7}, Zeile 12). Will man
|
||||
einen Vektor erweitern, kann man \"uber das Ende hinaus
|
||||
zuweisen. Matlab erweitert dann die Variable. Auch hierbei muss auf
|
||||
zuweisen. \matlab{} erweitert dann die Variable. Auch hierbei muss auf
|
||||
das Layout geachtet werden. Zudem ist dieser Vorgang
|
||||
``rechenintensiv'' und man sollte, soweit m\"oglich, vermeiden
|
||||
Vektoren bei Bedarf einfach zu erweitern.
|
||||
``rechenintensiv'' und sollte soweit m\"oglich vermieden werden.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[caption={Zusammenf\"ugen und erweitern von Vektoren.}, label=arrayListing7]
|
||||
\begin{lstlisting}[caption={Zusammenf\"ugen und Erweitern von Vektoren.}, label=arrayListing7]
|
||||
>> a = (0:2:8);
|
||||
>> b = (10:2:19);
|
||||
>> c = [a b] % erstelle einen Vektor aus einer Liste von Vektoren
|
||||
@ -451,7 +424,6 @@ Erzeugt werden Matrizen sehr \"ahnlich zu den Vektoren (Listing
|
||||
Vektor, durch \code{[]} eingeschlossen. Das \code{;} trennt die
|
||||
einzelnen Zeilen der Matrize.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=matrixListing, caption={Erzeugen von Matrizen.}]
|
||||
>> a = [1 2 3; 4 5 6; 7 8 9]
|
||||
>> a =
|
||||
@ -472,10 +444,9 @@ einzelnen Zeilen der Matrize.
|
||||
1 1 1
|
||||
1 1 1
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Zur Defintion von mehr-dimensionalen Matrizen ist die Notation in
|
||||
Zeile 1 nicht wirklich geeignet. Es gibt allerdings eine Reihe von
|
||||
Zeile 1 nicht geeignet. Es gibt allerdings eine Reihe von
|
||||
Helferfunktionen, die n-dimensionale Matrizen erstellen k\"onnen
|
||||
(z.B. \code{ones}, Zeile 7). Sollte sich die Notwendigkeit ergeben
|
||||
mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat}
|
||||
@ -504,7 +475,6 @@ angesprochen, der aus $n$ Zahlen besteht wobei $n$ die
|
||||
Dimensionalit\"at der Matrize ist. Diese Art des Zugriffs wird
|
||||
\textit{subsript indexing} genannt.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[caption={Zugriff auf Inhalte von Matrizen,
|
||||
Indexierung.}, label=matrixIndexing]
|
||||
>> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen
|
||||
@ -527,7 +497,6 @@ ans(:,:,4) =
|
||||
ans(:,:,5) =
|
||||
56
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
Alternativ zum \textit{subscript indexing} k\"onnen die Zellen einer
|
||||
Matrize auch \textit{linear} angesprochen werden (Abbildung
|
||||
@ -569,13 +538,12 @@ Vektoren. Matrizen k\"onnen solange elementweise miteinander
|
||||
Verrechnet werden, wie die Dimensionalit\"aten
|
||||
\"ubereinstimmen. Besondere Vorsicht sollte man immer dann walten
|
||||
lassen, wenn man Matrizen miteinander mulitplizieren, dividieren oder
|
||||
postenzieren will. Hier ist es wichtig sich klarzumachen was man will:
|
||||
Eine elementweise multiplikation (\code{.*} Operator, Listing
|
||||
potenzieren will. Hier ist es wichtig sich klarzumachen was man will:
|
||||
Eine elementweise Multiplikation (\code{.*} Operator, Listing
|
||||
\ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation
|
||||
(\code{*} Operator, Listing \ref{matrixOperations} Zeile 12)
|
||||
durchgef\"uhrt werden soll.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}]
|
||||
>> A = randi(10, [3, 3]) % 2-D Matrix
|
||||
A =
|
||||
@ -601,13 +569,12 @@ durchgef\"uhrt werden soll.
|
||||
50 70 5
|
||||
>>
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
\section{Boolesche Operationen}
|
||||
|
||||
Boolesche Ausdr\"ucke sind Anweisungen, die zu \textit{wahr} oder
|
||||
\textit{falsch} ausgewertet werden. Man kennt sie z.B. aus der
|
||||
Mengenlehre. In der Programmierung werdens sie eingesetzt um z.B. die
|
||||
Mengenlehre. In der Programmierung werdens sie eingesetzt, um z.B. die
|
||||
Beziehung zwischen Entit\"aten zu testen. Hierzu werden die
|
||||
\textit{relationalen Operatoren} (\code{>, <, ==, !}, gr\"o{\ss}er
|
||||
als, kleiner als, gleich und nicht) eingesetzt. Mehrere Ausdr\"ucke
|
||||
@ -650,19 +617,19 @@ wahr, wenn sich der eine \textit{oder} der andere Ausdruck zu wahr
|
||||
auswerten l\"a{\ss}t.
|
||||
|
||||
Tabelle \ref{logicaloperators} zeigt die logischen Operatoren, die in
|
||||
Matlab definiert sind. Zu bemerken sind hier noch die \code{\&\&} und
|
||||
\code{||} Operatoren. Man kann beliebige Ausdr\"ucke verkn\"uepfen und
|
||||
\matlab{} definiert sind. Zu bemerken sind hier noch die \code{\&\&} und
|
||||
\code{||} Operatoren. Man kann beliebige Ausdr\"ucke verkn\"upfen und
|
||||
h\"aufig kann schon anhand des ersten Ausdrucks entschieden werden, ob
|
||||
der gesamte Boolesche Ausdruck zu wahr oder falsch ausgewertet werden
|
||||
wird. Wenn zwei Aussagen mit einem UND verkn\"upft werden und der
|
||||
erste zu falsch ausgewerte wird, dann muss der zweite gar nicht mehr
|
||||
gepr\"uft werden. Die Verwendung der ``short-circuit'' Versionen spart
|
||||
rechenzeit. Das auschliessende ODER (XOR) ist in Matlab nur als Funktion
|
||||
Rechenzeit. Das auschliessende ODER (XOR) ist in \matlab{} nur als Funktion
|
||||
\code{xor(A, B)} verf\"ugbar.
|
||||
|
||||
\begin{table}[th]
|
||||
\caption{\label{logicaloperators}
|
||||
\textbf{Logische Operatoren in Matlab.}}
|
||||
\textbf{Logische Operatoren in \matlab.}}
|
||||
\begin{center}
|
||||
\begin{tabular}{c|c}
|
||||
\hline
|
||||
@ -684,7 +651,7 @@ auf Dinge wie Gleicheit (\code{==}) gr\"o{\ss}er oder kleiner als
|
||||
|
||||
\begin{table}[th]
|
||||
\caption{\label{relationaloperators}
|
||||
\textbf{Relationale Operatoren in Matlab.}}
|
||||
\textbf{Relationale Operatoren in \matlab.}}
|
||||
\begin{center}
|
||||
\begin{tabular}{c|c}
|
||||
\hline
|
||||
@ -703,16 +670,15 @@ auf Dinge wie Gleicheit (\code{==}) gr\"o{\ss}er oder kleiner als
|
||||
Das Ergebnis eines Booleschen Ausdrucks ist immer vom Datentyp
|
||||
\textit{logical}. Man kann jede beliebige Variable zu wahr oder falsch
|
||||
auswerten indem man in den Typ \textit{logical} umwandelt. Dabei
|
||||
werden von Matlab alle Werte, die nicht 0 sind als wahr
|
||||
werden von \matlab{} alle Werte, die nicht 0 sind als wahr
|
||||
eingesch\"atzt. Listing \ref{booleanexpressions} zeigt einige
|
||||
Beispiele. Matlab kennt die Schl\"usselworte \code{true} und
|
||||
Beispiele. \matlab{} kennt die Schl\"usselworte \code{true} und
|
||||
\code{false}. Diese sind jedoch nur Synonyme f\"ur die
|
||||
\textit{logical} Werte 1 und 0. Man beachte, dass der
|
||||
Zuweisungsoperator \code{=} und der logische Operator \code{==} zwei
|
||||
grundverschiedene Dinge sind. Da sie umgangsprachlich gleich sind kann
|
||||
man sie leider leicht verwechseln.
|
||||
|
||||
\footnotesize
|
||||
\begin{lstlisting}[caption={Boolesche Ausdr\"ucke.}, label=booleanexpressions]
|
||||
>> true
|
||||
ans =
|
||||
@ -751,7 +717,6 @@ ans =
|
||||
ans =
|
||||
1 0 1 1 0
|
||||
\end{lstlisting}
|
||||
\normalsize
|
||||
|
||||
|
||||
\section{Logisches Indizieren}\label{logicalindexingsec}
|
||||
@ -759,7 +724,7 @@ ans =
|
||||
|
||||
\section{Kontrollstrukturen}\label{controlstructsec}
|
||||
|
||||
\begin{definition}[Kontrollstrukturen]
|
||||
%\begin{definition}[Kontrollstrukturen]
|
||||
In der Regel wird ein Programm Zeile f\"ur Zeile von oben nach unten
|
||||
ausgef\"uhrt. Manchmal muss der Kontrollfluss aber so gesteuert
|
||||
werden, dass bestimmte Teile des Programmcodes wiederholt oder nur
|
||||
@ -770,7 +735,7 @@ ans =
|
||||
\item Schleifen.
|
||||
\item Bedingte Anweisungen und Verzweigungen.
|
||||
\end{enumerate}
|
||||
\end{definition}
|
||||
%\end{definition}
|
||||
|
||||
|
||||
\section{Skripte und Funktionen}
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
\subsection{Variablen}
|
||||
|
||||
Eine Variable ist ein Zeiger auf eine Stelle im Speicher. Dieser
|
||||
Eine Variable ist ein Zeiger auf eine Stelle im Speicher (RAM). Dieser
|
||||
Zeiger hat einen Namen, den Variablennamen, und einen Datentyp
|
||||
(Abbildung \ref{variablefig}).Im Speicher wird der Wert der Variablen
|
||||
(Abbildung \ref{variablefig}). Im Speicher wird der Wert der Variablen
|
||||
bin\"ar gespeichert. Wird auf den Wert der Variable zugegriffen, wird
|
||||
dieses Bitmuster je nach Datentyp interpretiert. Das Beispiel in
|
||||
Abbildung \ref{variablefig} zeigt, dass das gleiche Bitmuster im einen
|
||||
@ -73,8 +73,8 @@ Leerzeichen in Variablennamen nicht erlaubt.
|
||||
|
||||
\subsection{Arbeiten mit Variablen}
|
||||
|
||||
Nat\"urlich kann man mit den Variablen auch arbeiten, bzw
|
||||
rechnen. Matlab kennt alle normalen arithmetischen Operatoren wie
|
||||
Nat\"urlich kann mit den Variablen auch gearbeitet, bzw
|
||||
gerechnet werden. Matlab kennt alle normalen arithmetischen Operatoren wie
|
||||
\code{+, -, *. /}. Die Potenz wird \"uber das Dach Symbol \verb+^+
|
||||
dargestellt. Das folgende Listing zeigt, wie sie benutzt werden.
|
||||
|
||||
@ -110,8 +110,8 @@ z =
|
||||
|
||||
Beachtenswert ist z.B. in Zeilen 3 und 6, dass wir mit dem Inhalt
|
||||
einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert
|
||||
ver\"andert w\"urde. Wenn der Wert einer Variablen ver\"andert werden
|
||||
soll, dann muss dieser der Variable expliyit zugewiesen werden (mit
|
||||
ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden
|
||||
soll, dann muss dieser der Variable explizit zugewiesen werden (mit
|
||||
dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt
|
||||
wie eine einzelne Variable gel\"oscht wird.
|
||||
|
||||
@ -143,8 +143,7 @@ Datentyp & Speicherbedarf & Wertebereich & Beispiel \\ \cline{1-4}
|
||||
double & 64 bit & $-2^{15} bis 2^{15}-1$ & Flie{\ss}kommazahlen.\\ \cline{1-4}
|
||||
int & 64 bit & $-2^{31} bis 2^{31}-1$ & Ganzzahlige Werte \\ \cline{1-4}
|
||||
int16 & 64 bit & $-2^{15} bis 2^{15}-1$ & Digitalisierte Spannungen. \\ \cline{1-4}
|
||||
uint8 & 64 bit & 0 bis 255 & Digitalisierte Imaging Daten. \\ \cline{1-4}
|
||||
& & &
|
||||
uint8 & 64 bit & 0 bis 255 & Digitalisierte Imaging Daten. \cline{1-4}
|
||||
\end{tabular}
|
||||
\end{table}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
g\documentclass[12pt]{report}
|
||||
\documentclass[12pt]{report}
|
||||
|
||||
\input{header}
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -5,9 +5,6 @@ for i = [1:length(nrolls)]
|
||||
% plain hist:
|
||||
%hist(d)
|
||||
|
||||
% check bin counts of plain hist:
|
||||
% h = hist(d)
|
||||
|
||||
% force 6 bins:
|
||||
%hist(d, 6)
|
||||
|
||||
|
@ -13,14 +13,3 @@ bar(b2,h2, 'facecolor', 'r' )
|
||||
xlabel('x')
|
||||
ylabel('Frequency')
|
||||
hold off
|
||||
|
||||
% normalize:
|
||||
hn1 = h1/sum(h1)/db1;
|
||||
hn2 = h2/sum(h2)/db2;
|
||||
subplot( 1, 2, 2 )
|
||||
bar(b1,hn1)
|
||||
hold on
|
||||
bar(b2,hn2, 'facecolor', 'r' )
|
||||
xlabel('x')
|
||||
ylabel('Probability density')
|
||||
hold off
|
||||
|
9
statistics/code/gaussianbinsnorm.m
Normal file
9
statistics/code/gaussianbinsnorm.m
Normal file
@ -0,0 +1,9 @@
|
||||
hn1 = h1/sum(h1)/db1;
|
||||
hn2 = h2/sum(h2)/db2;
|
||||
subplot( 1, 2, 2 )
|
||||
bar(b1,hn1)
|
||||
hold on
|
||||
bar(b2,hn2, 'facecolor', 'r' )
|
||||
xlabel('x')
|
||||
ylabel('Probability density')
|
||||
hold off
|
@ -1,9 +1,8 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
#x = np.random.randn( 40, 10 )
|
||||
#np.save('boxwhiskerdata', x )
|
||||
x = np.load('boxwhiskerdata.npy')
|
||||
rng = np.random.RandomState(981)
|
||||
x = rng.randn( 40, 10 )
|
||||
|
||||
plt.xkcd()
|
||||
fig = plt.figure( figsize=(6,4) )
|
||||
@ -16,27 +15,27 @@ ax.set_xlabel('Experiment')
|
||||
ax.set_ylabel('x')
|
||||
ax.set_ylim( -4.0, 4.0)
|
||||
ax.annotate('Median',
|
||||
xy=(3.9, 0.1), xycoords='data',
|
||||
xytext=(3.5, -2.5), textcoords='data', ha='right',
|
||||
xy=(3.9, 0.0), xycoords='data',
|
||||
xytext=(3.5, -2.7), textcoords='data', ha='right',
|
||||
arrowprops=dict(arrowstyle="->", relpos=(0.8,1.0),
|
||||
connectionstyle="angle3,angleA=-110,angleB=60") )
|
||||
ax.annotate('1. quartile',
|
||||
xy=(5.8, -0.7), xycoords='data',
|
||||
xytext=(5.5, -3.5), textcoords='data', ha='right',
|
||||
arrowprops=dict(arrowstyle="->", relpos=(0.5,1.0),
|
||||
xy=(5.8, -0.9), xycoords='data',
|
||||
xytext=(5.5, -3.4), textcoords='data', ha='right',
|
||||
arrowprops=dict(arrowstyle="->", relpos=(0.9,1.0),
|
||||
connectionstyle="angle3,angleA=30,angleB=70") )
|
||||
ax.annotate('3. quartile',
|
||||
xy=(6.1, 0.6), xycoords='data',
|
||||
xy=(6.1, 1.1), xycoords='data',
|
||||
xytext=(6.5, 3.0), textcoords='data', ha='left',
|
||||
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.0),
|
||||
connectionstyle="angle3,angleA=30,angleB=70") )
|
||||
ax.annotate('minimum',
|
||||
xy=(6.1, -2.3), xycoords='data',
|
||||
xy=(6.1, -1.9), xycoords='data',
|
||||
xytext=(7.2, -3.3), textcoords='data', ha='left',
|
||||
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.5),
|
||||
connectionstyle="angle3,angleA=10,angleB=100") )
|
||||
ax.annotate('maximum',
|
||||
xy=(5.9, 2.8), xycoords='data',
|
||||
xy=(5.9, 2.7), xycoords='data',
|
||||
xytext=(4.9, 3.5), textcoords='data', ha='right',
|
||||
arrowprops=dict(arrowstyle="->", relpos=(1.0,0.5),
|
||||
connectionstyle="angle3,angleA=0,angleB=120") )
|
||||
|
Binary file not shown.
@ -2,11 +2,12 @@ import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
plt.xkcd()
|
||||
fig = plt.figure( figsize=(6,5) )
|
||||
fig = plt.figure( figsize=(6,4.6) )
|
||||
rng = np.random.RandomState(2981)
|
||||
n = 200
|
||||
for k, r in enumerate( [ 1.0, 0.6, 0.0, -0.9 ] ) :
|
||||
x = np.random.randn( n )
|
||||
y = r*x + np.sqrt(1.0-r*r)*np.random.randn( n )
|
||||
x = rng.randn( n )
|
||||
y = r*x + np.sqrt(1.0-r*r)*rng.randn( n )
|
||||
ax = fig.add_subplot( 2, 2, k+1 )
|
||||
ax.spines['right'].set_visible(False)
|
||||
ax.spines['top'].set_visible(False)
|
||||
@ -25,7 +26,7 @@ for k, r in enumerate( [ 1.0, 0.6, 0.0, -0.9 ] ) :
|
||||
ax.set_ylabel('y')
|
||||
ax.set_xlim( -3.0, 3.0)
|
||||
ax.set_ylim( -3.0, 3.0)
|
||||
ax.scatter( x, y )
|
||||
ax.scatter( x[(np.abs(x)<2.8)&(np.abs(y)<2.8)], y[(np.abs(x)<2.8)&(np.abs(y)<2.8)] )
|
||||
|
||||
plt.tight_layout()
|
||||
plt.savefig('correlation.pdf')
|
||||
|
@ -2,7 +2,7 @@ import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
plt.xkcd()
|
||||
fig = plt.figure( figsize=(6,3) )
|
||||
fig = plt.figure( figsize=(6,2.2) )
|
||||
n = 200
|
||||
x = np.random.randn( n )
|
||||
y = np.random.randn( n )
|
||||
|
@ -2,35 +2,22 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\chapter{\tr{Descriptive statistics}{Deskriptive Statistik}}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
%\section{Statistics of real-valued data}
|
||||
|
||||
\begin{itemize}
|
||||
\item Location, central tendency
|
||||
\begin{itemize}
|
||||
\item arithmetic mean
|
||||
\item median
|
||||
\item mode
|
||||
\end{itemize}
|
||||
\item Spread, dispersion
|
||||
\begin{itemize}
|
||||
\item variance
|
||||
\item standard deviation
|
||||
\item interquartile range
|
||||
\item coefficient of variation
|
||||
\item minimum, maximum
|
||||
\end{itemize}
|
||||
\item Shape
|
||||
\begin{itemize}
|
||||
\item skewnees
|
||||
\item kurtosis
|
||||
\end{itemize}
|
||||
\item Dependence
|
||||
\begin{itemize}
|
||||
\item Pearson correlation coefficient
|
||||
\item Spearman's rank correlation coefficient
|
||||
\end{itemize}
|
||||
\end{itemize}
|
||||
Bei der deskriptiven Statistik werden Datens\"atze durch wenige Kenngr\"o{\ss}en
|
||||
\"ubersichtlich dargestellt.
|
||||
|
||||
Neben dem Histogramm, das die Wahrscheinlichkeitsverteilung der Daten
|
||||
im Detail darstellt, werden u.a. folgende Kenngr\"o{\ss}en zur Beschreibung
|
||||
der Daten eingesetzt:
|
||||
\begin{description}
|
||||
\item[Lagema{\ss}e] (``location'', ``central tendency''):
|
||||
arithmetisches Mittel, Median, Modus (``Mode'')
|
||||
\item[Streuungsma{\ss}e] (``spread'', ``dispersion''): Varianz,
|
||||
Standardabweichung, Interquartilabstand,\linebreak Variations\-koeffizient
|
||||
(``Coefficient of variation'')
|
||||
\item[Shape]: Schiefe (``skewnees''), W\"olbung (``kurtosis'')
|
||||
\item[Zusammenhangsma{\ss}e]: Pearson Korrelationskoeffizient,
|
||||
Spearmans Rang\-korrelations\-koeffizient.
|
||||
\end{description}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
\section{\tr{Mode, median, quartile, etc.}{Modus, Median, Quartil, etc.}}
|
||||
@ -54,6 +41,7 @@ Der Median teilt eine Liste von Messwerten so in zwei H\"alften, dass
|
||||
die eine H\"alfte der Daten nicht gr\"o{\ss}er und die andere H\"alfte
|
||||
nicht kleiner als der Median ist (\figref{medianfig}).
|
||||
|
||||
\newpage
|
||||
\begin{exercise}{mymedian.m}{}
|
||||
\tr{Write a function \code{mymedian} that computes the median of a vector.}
|
||||
{Schreibe eine Funktion \code{mymedian}, die den Median eines Vektors zur\"uckgibt.}
|
||||
@ -61,6 +49,7 @@ nicht kleiner als der Median ist (\figref{medianfig}).
|
||||
|
||||
\matlab{} stellt die Funktion \code{median()} zur Berechnung des Medians bereit.
|
||||
|
||||
\newpage
|
||||
\begin{exercise}{checkmymedian.m}{}
|
||||
\tr{Write a script that tests whether your median function really
|
||||
returns a median above which are the same number of data than
|
||||
@ -95,7 +84,9 @@ eine feinere Einteilung. Das 3. Quartil ist das 75. Perzentil, da
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=1\textwidth]{boxwhisker}
|
||||
\caption{\label{boxwhiskerfig} Box-whisker plots illustrate distributions.}
|
||||
\caption{\label{boxwhiskerfig} Box-Whisker Plots sind gut geeignet
|
||||
um mehrere unimodale Verteilungen miteinander zu vergleichen.
|
||||
Hier sind es jeweils 40 normalverteilte Zufallszahlen.}
|
||||
\end{figure}
|
||||
|
||||
Box-Whisker Plots sind eine h\"aufig verwendete Darstellung um die
|
||||
@ -151,12 +142,13 @@ Wahrscheinlichkeitsverteilung der Messwerte abzusch\"atzen.
|
||||
mit der theoretischen Verteilung $P=1/6$ vergleichbar.}}
|
||||
\end{figure}
|
||||
|
||||
\newpage
|
||||
Bei ganzzahligen Messdaten (z.B. die Augenzahl eines W\"urfels oder
|
||||
die Anzahl von Aktionspotentialen in einem bestimmten Zeitfenster)
|
||||
kann f\"ur jede auftretende Zahl eine Klasse definiert werden. Damit
|
||||
die H\"ohe der Histogrammbalken unabh\"angig von der Anzahl der
|
||||
Messwerte wird, normiert man das Histogram auf die Anzahl der
|
||||
Messwerte (\figref{diehistogramsfig}). Die H\"ohe der
|
||||
Messwerte wird, wird das Histogram auf die Anzahl der
|
||||
Messwerte normiert (\figref{diehistogramsfig}). Die H\"ohe der
|
||||
Histogrammbalken gibt dann die Wahrscheinlichkeit $P(x_i)$ des
|
||||
Auftretens der Gr\"o{\ss}e $x_i$ in der $i$-ten Klasse an
|
||||
\[ P_i = \frac{n_i}{N} = \frac{n_i}{\sum_{i=1}^M n_i} \; . \]
|
||||
@ -176,15 +168,52 @@ Zahl aus einem bestimmten Bereich zu erhalten, z.B. die
|
||||
Wahrscheinlichkeit $P(1.2<x<1.3)$, dass die Zahl $x$ einen Wert
|
||||
zwischen 1.2 und 1.3 hat.
|
||||
|
||||
%Der Grenzwert zu einem immer kleineren
|
||||
%Bereich f\"uhrt uns dann zum Begriff der Wahrscheinlichkeitsdichte
|
||||
%\[ p(x) = \lim_{\Delta x \to 0}P(x_0<x<x_0+\Delta x) = P(x_0) + dP/dx \cdot \Delta x \]
|
||||
Im Grenzwert zu sehr kleinen Bereichen $\Delta x$ ist die Wahrscheinlichkeit
|
||||
eines Wertes $x$ zwischen $x_0$ und $x_0+\Delta x$
|
||||
\[ P(x_0<x<x_0+\Delta x) \approx p(x) \cdot \Delta x \; . \]
|
||||
Die Gr\"o{\ss}e $p(x)$ ist eine sogenannte
|
||||
``Wahrscheinlichkeitsdichte''. Sie ist keine einheitenlose
|
||||
Wahrscheinlichkeit mit Werten zwischen Null und Eins, sondern kann
|
||||
jeden positiven Wert annehmen und hat als Einheit den Kehrwert der
|
||||
Einheit von $x$.
|
||||
|
||||
\begin{exercise}{gaussianbins.m}{}
|
||||
\tr{Draw 100 random data from a Gaussian distribution and plot
|
||||
histograms with different bin sizes of the data.} {Ziehe 100
|
||||
normalverteilte Zufallszahlen und erzeuge Histogramme mit
|
||||
unterschiedlichen Klassenbreiten. Was f\"allt auf?}
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=1\textwidth]{pdfprobabilities}
|
||||
\caption{\label{pdfprobabilitiesfig} Wahrscheinlichkeiten bei
|
||||
einer Wahrscheinlichkeitsdichtefunktion.}
|
||||
\end{figure}
|
||||
|
||||
F\"ur beliebige Bereiche ist die Wahrscheinlichkeit f\"ur den Wert $x$ zwischen
|
||||
$x_1$ und $x_2$ gegeben durch
|
||||
\[ P(x_1 < x < x2) = \int\limits_{x_1}^{x_2} p(x) \, dx \; . \]
|
||||
Da die Wahrscheinlichkeit irgendeines Wertes $x$ Eins ergeben muss gilt die Normierung
|
||||
\begin{equation}
|
||||
\label{pdfnorm}
|
||||
P(-\infty < x < \infty) = \int\limits_{-\infty}^{+\infty} p(x) \, dx = 1 \; .
|
||||
\end{equation}
|
||||
Die gesamte Funktion $p(x)$, die jedem Wert $x$ einen
|
||||
Wahrscheinlichkeitsdichte zuordnet wir auch
|
||||
Wahrscheinlichkeitsdichtefunktion (``probability density function'',
|
||||
``pdf'', oder kurz ``density'') genannt. Die bekannteste
|
||||
Wahrscheinlichkeitsdichtefunktion ist die der Normalverteilung
|
||||
\[ p_g(x) =
|
||||
\frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} \]
|
||||
--- die Gau{\ss}sche-Glockenkurve mit Mittelwert $\mu$ und
|
||||
Standardabweichung $\sigma$.
|
||||
|
||||
\newpage
|
||||
\begin{exercise}{gaussianpdf.m}{gaussianpdf.out}
|
||||
\vspace{-3ex}
|
||||
\begin{enumerate}
|
||||
\item Plotte die Wahrscheinlichkeitsdichte der Normalverteilung $p_g(x)$.
|
||||
\item Berechne f\"ur die Normalverteilung mit Mittelwert Null und
|
||||
Standardabweichung Eins die Wahrscheinlichkeit, eine Zahl zwischen
|
||||
0 und 1 zu erhalten.
|
||||
\item Ziehe 1000 normalverteilte Zufallszahlen und bestimme von
|
||||
diesen Zufallzahlen die Wahrscheinlichkeit der Zahlen zwischen
|
||||
Null und Eins.
|
||||
\item Berechne aus der Normalverteilung $\int_{-\infty}^{+\infty} p(x) \, dx$.
|
||||
\end{enumerate}
|
||||
\end{exercise}
|
||||
|
||||
\begin{figure}[t]
|
||||
@ -200,65 +229,66 @@ zwischen 1.2 und 1.3 hat.
|
||||
(blau).}}
|
||||
\end{figure}
|
||||
|
||||
Histogramme von reellen Messwerten m\"ussen auf das Integral 1
|
||||
normiert werden, so dass das Integral (nicht die Summe) \"uber das
|
||||
Histogramm eins ergibt --- denn die Wahrscheinlichkeit, dass
|
||||
irgendeiner der Messwerte auftritt mu{\ss} Eins sein. Das Integral ist
|
||||
die Fl\"ache des Histogramms. Diese setzt sich zusammen aus der
|
||||
Fl\"ache der einzelnen Histogrammbalken. Diese haben die H\"ohe $n_i$
|
||||
und die Breite $\Delta x$. Die Gesamtfl\"ache $A$ des Histogramms ist
|
||||
also
|
||||
\begin{exercise}{gaussianbins.m}{}
|
||||
\tr{Draw 100 random data from a Gaussian distribution and plot
|
||||
histograms with different bin sizes of the data.} {Ziehe 100
|
||||
normalverteilte Zufallszahlen und erzeuge Histogramme mit
|
||||
unterschiedlichen Klassenbreiten. Was f\"allt auf?}
|
||||
\end{exercise}
|
||||
|
||||
Damit Histogramme von reellen Messwerten trotz unterschiedlicher
|
||||
Anzahl von Messungen und unterschiedlicher Klassenbreiten
|
||||
untereinander vergleichbar werden und mit bekannten
|
||||
Wahrscheinlichkeitsdichtefunktionen verglichen werden k\"onnen,
|
||||
m\"ussen sie auf das Integral Eins normiert werden
|
||||
\eqnref{pdfnorm}. Das Integral (nicht die Summe) \"uber das Histogramm
|
||||
soll Eins ergeben --- denn die Wahrscheinlichkeit, dass irgendeiner
|
||||
der Messwerte auftritt mu{\ss} Eins sein. Das Integral ist die
|
||||
Fl\"ache des Histogramms, die sich aus der Fl\"ache der einzelnen
|
||||
Histogrammbalken zusammen setzt. Die Balken des Histogramms haben die
|
||||
H\"ohe $n_i$ und die Breite $\Delta x$. Die Gesamtfl\"ache $A$ des
|
||||
Histogramms ist also
|
||||
\[ A = \sum_{i=1}^N ( n_i \cdot \Delta x ) = \Delta x \sum_{i=1}^N n_i \]
|
||||
und das normierte Histogramm hat die H\"ohe
|
||||
\[ p(x_i) = \frac{n_i}{\Delta x \sum_{i=1}^N n_i} \]
|
||||
Es muss also nicht nur durch die Summe, sondern auch durch die Breite $\Delta x$ der Klassen
|
||||
geteilt werden.
|
||||
Es muss also nicht nur durch die Summe, sondern auch durch die Breite
|
||||
$\Delta x$ der Klassen geteilt werden (\figref{pdfhistogramfig}).
|
||||
|
||||
$p(x_i)$ kann keine Wahrscheinlichkeit sein, da $p(x_i)$ nun eine
|
||||
Einheit hat --- das Inverse der Einheit der Messgr\"osse $x$. Man
|
||||
spricht von einer Wahrscheinlichkeitsdichte.
|
||||
|
||||
\begin{figure}[t]
|
||||
\includegraphics[width=1\textwidth]{pdfprobabilities}
|
||||
\caption{\label{pdfprobabilitiesfig} Wahrscheinlichkeiten bei
|
||||
einer Wahrscheinlichkeitsdichtefunktion.}
|
||||
\end{figure}
|
||||
|
||||
\begin{exercise}{gaussianpdf.m}{gaussianpdf.out}
|
||||
\tr{Plot the Gaussian probability density}{Plotte die Gauss'sche Wahrscheinlichkeitsdichte }
|
||||
\[ p_g(x) = \frac{1}{\sqrt{2\pi\sigma^2}}e^{-\frac{(x-\mu)^2}{2\sigma^2}}\]
|
||||
\tr{What does it mean?}{Was bedeutet die folgende Wahrscheinlichkeit?}
|
||||
\[ P(x_1 < x < x2) = \int\limits_{x_1}^{x_2} p(x) \, dx \]
|
||||
\tr{How large is}{Wie gro{\ss} ist}
|
||||
\[ \int\limits_{-\infty}^{+\infty} p(x) \, dx \; ?\]
|
||||
\tr{Why?}{Warum?}
|
||||
\begin{exercise}{gaussianbinsnorm.m}{}
|
||||
Normiere das Histogramm der vorherigen \"Ubung zu einer Wahrscheinlichkeitsdichte.
|
||||
\end{exercise}
|
||||
|
||||
|
||||
\section{\tr{Correlations}{Korrelationen}}
|
||||
|
||||
\begin{figure}[t]
|
||||
\begin{figure}[tp]
|
||||
\includegraphics[width=1\textwidth]{correlation}
|
||||
\caption{\label{correlationfig} Korrelationen zwischen zwei Datens\"atzen $x$ und $y$.}
|
||||
\caption{\label{correlationfig} Korrelationen zwischen zwei
|
||||
Datens\"atzen $x$ und $y$.}
|
||||
\end{figure}
|
||||
|
||||
Bisher haben wir Eigenschaften einer einzelnen Me{\ss}gr\"o{\ss}e
|
||||
angeschaut. Bei mehreren Me{\ss}gr\"o{\ss}en, kann nach
|
||||
Abh\"angigkeiten zwischen den beiden Gr\"o{\ss}en gefragt werden. Der
|
||||
Korrelationskoeffizient
|
||||
Korrelations\-koeffizient
|
||||
\[ r_{x,y} = \frac{Cov(x,y)}{\sigma_x \sigma_y} = \frac{\langle
|
||||
(x-\langle x \rangle)(y-\langle y \rangle) \rangle}{\sqrt{\langle
|
||||
(x-\langle x \rangle)^2} \rangle \sqrt{\langle (y-\langle y
|
||||
\rangle)^2} \rangle} \] quantifiziert einfache lineare
|
||||
Zusammenh\"ange \matlabfun{corr}. Perfekt korrelierte Variablen ergeben einen
|
||||
\rangle)^2} \rangle} \]
|
||||
quantifiziert einfache lineare Zusammenh\"ange \matlabfun{corr}. Der
|
||||
Korrelationskoeffizient ist die Covarianz normiert durch die
|
||||
Standardabweichungen. Perfekt korrelierte Variablen ergeben einen
|
||||
Korrelationskoeffizienten von $+1$, antikorrelierte Daten einen
|
||||
Korrelationskoeffizienten von $-1$ und nicht korrelierte Daten einen
|
||||
Korrelationskoeffizienten nahe 0 (\figrefb{correlationfig}).
|
||||
Korrelationskoeffizienten nahe Null (\figrefb{correlationfig}).
|
||||
|
||||
\begin{figure}[t]
|
||||
Nichtlineare Abh\"angigkeiten werden von dem Korrelationskoeffizienten
|
||||
nur unzureichend oder \"uberhaupt nicht erfasst (\figref{nonlincorrelationfig}).
|
||||
|
||||
\begin{figure}[tp]
|
||||
\includegraphics[width=1\textwidth]{nonlincorrelation}
|
||||
\caption{\label{nonlincorrelationfig} Nichtlineare Zusammenh\"ange
|
||||
werden durch den Korrelationskoeffizienten nicht erfasst! Sowohl
|
||||
werden durch den Korrelationskoeffizienten nicht erfasst. Sowohl
|
||||
die quadratische Abh\"angigkeit (links) als auch eine
|
||||
Rauschkorrelation (rechts), bei der die Streuung der $y$-Werte von
|
||||
$x$ abh\"angen, ergeben Korrelationskeffizienten nahe Null.
|
||||
|
Reference in New Issue
Block a user