Updated statistics chapter
This commit is contained in:
parent
be13ea7610
commit
3216086642
3
Makefile
3
Makefile
@ -1,6 +1,7 @@
|
|||||||
BASENAME=scientificcomputing-script
|
BASENAME=scientificcomputing-script
|
||||||
|
|
||||||
SUBDIRS=programming statistics bootstrap likelihood pointprocesses spike_trains designpattern
|
SUBDIRS=programming statistics bootstrap likelihood pointprocesses
|
||||||
|
#spike_trains designpattern
|
||||||
# regression
|
# regression
|
||||||
|
|
||||||
pdf : $(BASENAME).pdf
|
pdf : $(BASENAME).pdf
|
||||||
|
18
header.tex
18
header.tex
@ -28,7 +28,12 @@
|
|||||||
%%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%% graphics %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\usepackage{subcaption}
|
\usepackage{subcaption}
|
||||||
\usepackage{graphicx}
|
\usepackage{graphicx}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%% Colors %%%%%%%%%%%%%%%%
|
||||||
\usepackage{xcolor}
|
\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}
|
\pagecolor{white}
|
||||||
|
|
||||||
%%%%% figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%% figures %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@ -149,6 +154,9 @@
|
|||||||
belowskip=2ex
|
belowskip=2ex
|
||||||
}
|
}
|
||||||
|
|
||||||
|
%%%%%%%%%%%%% Table stuff %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\usepackage{multirow}
|
||||||
|
|
||||||
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%% math stuff: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\usepackage{amsmath}
|
\usepackage{amsmath}
|
||||||
\usepackage{bm}
|
\usepackage{bm}
|
||||||
@ -203,13 +211,3 @@
|
|||||||
{\addtocounter{lstlisting}{-1}\lstinputlisting[language={},title={\textbf{\tr{Output}{Ausgabe}:}},belowskip=0pt]{\codepath\exerciseoutput}}}}%
|
{\addtocounter{lstlisting}{-1}\lstinputlisting[language={},title={\textbf{\tr{Output}{Ausgabe}:}},belowskip=0pt]{\codepath\exerciseoutput}}}}%
|
||||||
\endMakeFramed\stepcounter{theexercise}%
|
\endMakeFramed\stepcounter{theexercise}%
|
||||||
\renewcommand{\theenumi}{\saveenumi}}
|
\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)
|
BASENAME=programming
|
||||||
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
|
|
||||||
|
|
||||||
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
|
pdflatex -interaction=scrollmode $< | tee /dev/stderr | fgrep -q "Rerun to get cross-references right" && pdflatex -interaction=scrollmode $< || true
|
||||||
|
|
||||||
|
$(PYPDFFILES) : %.pdf : %.py
|
||||||
|
python $<
|
||||||
|
|
||||||
clean :
|
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
|
cleanall : clean
|
||||||
rm -f $(PDFFILES)
|
rm -f $(BASENAME)-chapter.pdf
|
||||||
|
|
||||||
watch :
|
watchpdf :
|
||||||
while true; do ! make -q pdf && make pdf; sleep 0.5; done
|
while true; do ! make -q pdf && make pdf; sleep 0.5; done
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,372 +1,17 @@
|
|||||||
\documentclass[12pt]{report}
|
\documentclass[12pt]{report}
|
||||||
|
|
||||||
%%%%% title %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
\input{../../header}
|
||||||
\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}
|
|
||||||
|
|
||||||
%%%% language %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
\lstset{inputpath=../code}
|
||||||
% \newcommand{\tr}[2]{#1} % en
|
|
||||||
% \usepackage[english]{babel}
|
|
||||||
\newcommand{\tr}[2]{#2} % de
|
|
||||||
\usepackage[german]{babel}
|
|
||||||
|
|
||||||
%%%%% packages %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
\graphicspath{{images/}}
|
||||||
\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/}}
|
|
||||||
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\begin{document}
|
\begin{document}
|
||||||
|
|
||||||
\chapter{Grundlagen der Programmierung in Matlab}
|
\include{programming}
|
||||||
|
|
||||||
|
|
||||||
\include{variables_datatypes}
|
|
||||||
|
|
||||||
|
|
||||||
\include{vectors_matrices}
|
|
||||||
|
|
||||||
|
|
||||||
\include{control_structures}
|
|
||||||
|
|
||||||
|
|
||||||
\end{document}
|
\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}
|
\section{Variablen und Datentypen}
|
||||||
|
|
||||||
@ -8,13 +8,13 @@
|
|||||||
|
|
||||||
Eine Variable ist ein Zeiger auf eine Stelle im Speicher. Dieser
|
Eine Variable ist ein Zeiger auf eine Stelle im Speicher. Dieser
|
||||||
Zeiger hat einen Namen, den Variablennamen, und einen Datentyp
|
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
|
bin\"ar gespeichert. Wird auf den Wert der Variable zugegriffen, wird
|
||||||
dieses Bitmuster je nach Datentyp interpretiert. Das Beispiel in
|
dieses Bitmuster je nach Datentyp interpretiert. Das Beispiel in
|
||||||
Abbildung \ref{variablefig} zeigt, dass das gleiche Bitmuster im einen
|
Abbildung \ref{variablefig} zeigt, dass das gleiche Bitmuster im einen
|
||||||
Fall als 8-Bit Integer Datentyp zur Zahl 38 interpretiert wird und im
|
Fall als 8-Bit Integer Datentyp zur Zahl 38 interpretiert wird und im
|
||||||
anderen Fall als Character zum kaufm\"annischen ``und'' ausgewertet
|
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
|
Bedeutung. Wir werden uns dennoch sp\"ater etwas genauer mit ihnen
|
||||||
befassen.
|
befassen.
|
||||||
|
|
||||||
@ -37,10 +37,9 @@ befassen.
|
|||||||
|
|
||||||
|
|
||||||
\subsection{Erzeugen von Variablen}
|
\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
|
oder einer Funktion an beliebiger Stelle erzeugen. Das folgende
|
||||||
Listing zeigt zwei M\"oglichkeiten:
|
Listing zeigt zwei M\"oglichkeiten:
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=varListing1, caption=Erzeugen von Variablen]
|
\begin{lstlisting}[label=varListing1, caption=Erzeugen von Variablen]
|
||||||
>> y = []
|
>> y = []
|
||||||
y =
|
y =
|
||||||
@ -50,26 +49,23 @@ y =
|
|||||||
x =
|
x =
|
||||||
38
|
38
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Die Zeile 1 kann etwa so gelesen werden:''Erzeuge eine Variable mit
|
Die Zeile 1 kann etwa so gelesen werden:''Erzeuge eine Variable mit
|
||||||
dem Namen y und weise ihr einen leeren Wert zu.'' Das
|
dem Namen y und weise ihr einen leeren Wert zu.'' Das
|
||||||
Gleichheitszeichen ist der sogenannte
|
Gleichheitszeichen ist der sogenannte
|
||||||
\textit{Zuweisungsoperator}. Zeile 5 definiert eine Variable x, der
|
\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
|
angegeben immer den ``double'' Datentypen benutzt, haben beide
|
||||||
Variablen diesen Datentyp.
|
Variablen diesen Datentyp.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=varListing2, caption={Erfragen des Datentyps einer Variable, Listen aller definierten Variablen.}]
|
\begin{lstlisting}[label=varListing2, caption={Erfragen des Datentyps einer Variable, Listen aller definierten Variablen.}]
|
||||||
>>disp(class(x))
|
>>disp(class(x))
|
||||||
double
|
double
|
||||||
>>
|
>>
|
||||||
>> who % oder whos um mehr Information zu bekommen
|
>> who % oder whos um mehr Information zu bekommen
|
||||||
\end{lstlisting}
|
\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
|
Kleinschreibung achtet und ein Variablennane mit einem alphabethischen
|
||||||
Zeichen beginnen muss. Des Weiteren sind Umlaute, Sonder- und
|
Zeichen beginnen muss. Des Weiteren sind Umlaute, Sonder- und
|
||||||
Leerzeichen in Variablennamen nicht erlaubt.
|
Leerzeichen in Variablennamen nicht erlaubt.
|
||||||
@ -77,12 +73,11 @@ Leerzeichen in Variablennamen nicht erlaubt.
|
|||||||
|
|
||||||
\subsection{Arbeiten mit Variablen}
|
\subsection{Arbeiten mit Variablen}
|
||||||
|
|
||||||
Nat\"urlich kann man mit den Variablen auch arbeiten, bzw
|
Nat\"urlich kann mit den Variablen auch gearbeitet, bzw
|
||||||
rechnen. Matlab kennt alle normalen arithmetischen Operatoren wie
|
gerechnet werden. \matlab{} kennt alle normalen arithmetischen Operatoren wie
|
||||||
\code{+, -, *. /}. Die Potenz wird \"uber das Dach Symbol \code{\^}
|
\code{+, -, *. /}. Die Potenz wird \"uber das Dach Symbol \code{\^}
|
||||||
dargestellt. Das folgende Listing zeigt, wie sie benutzt werden.
|
dargestellt. Das folgende Listing zeigt, wie sie benutzt werden.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}]
|
\begin{lstlisting}[label=varListing3, caption={Rechnen mit Variablen.}]
|
||||||
>> x = 1;
|
>> x = 1;
|
||||||
>> x + 10
|
>> x + 10
|
||||||
@ -110,12 +105,11 @@ z =
|
|||||||
>>
|
>>
|
||||||
>> clear z
|
>> clear z
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Beachtenswert ist z.B. in Zeilen 3 und 6, dass wir mit dem Inhalt
|
Beachtenswert ist z.B. in Zeilen 3 und 6, dass wir mit dem Inhalt
|
||||||
einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert
|
einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert
|
||||||
ver\"andert w\"urde. Wenn der Wert einer Variablen ver\"andert werden
|
ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden
|
||||||
soll, dann muss dieser der Variable expliyit zugewiesen werden (mit
|
soll, dann muss dieser der Variable explizit zugewiesen werden (mit
|
||||||
dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt
|
dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt
|
||||||
wie eine einzelne Variable gel\"oscht wird.
|
wie eine einzelne Variable gel\"oscht wird.
|
||||||
|
|
||||||
@ -127,8 +121,8 @@ interpretiert werden. Die Wichtigsten Datentpyen sind folgende:
|
|||||||
|
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item \textit{integer} - Ganze Zahlen. Hier gibt es mehrere
|
\item \textit{integer} - Ganze Zahlen. Hier gibt es mehrere
|
||||||
Unterarten, die wir in Matlab (meist) ignorieren k\"onnen.
|
Unterarten, die wir in \matlab{} (meist) ignorieren k\"onnen.
|
||||||
\item \textit{double} - Flie{\ss}kommazahlen.
|
\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{complex} - Komplexe Zahlen.
|
||||||
\item \textit{logical} - Boolesche Werte, die als wahr
|
\item \textit{logical} - Boolesche Werte, die als wahr
|
||||||
(\textit{true}) oder falsch (\textit{false}) interpretiert werden.
|
(\textit{true}) oder falsch (\textit{false}) interpretiert werden.
|
||||||
@ -142,18 +136,18 @@ unterschiedlichem Speicherbedarf und Wertebreich.
|
|||||||
\centering
|
\centering
|
||||||
\caption{Gel\"aufige Datentypen und ihr Wertebereich.}
|
\caption{Gel\"aufige Datentypen und ihr Wertebereich.}
|
||||||
\label{dtypestab}
|
\label{dtypestab}
|
||||||
\begin{tabular}{l|l|c|cl}
|
\begin{tabular}{llcl}
|
||||||
Datentyp & Speicherbedarf & Wertebereich & Beispiel \\ \cline{1-4}
|
\hline
|
||||||
double & 64 bit & & Flie{\ss}kommazahlen.\\ \cline{1-4}
|
Datentyp & Speicherbedarf & Wertebereich & Beispiel \rule{0pt}{2.5ex} \\ \hline
|
||||||
int & 64 bit & $-2^{31} bis 2^{31}-1$ & Ganzzahlige Werte \\ \cline{1-4}
|
double & 64 bit & $\approx -10^{308}$ bis $\approx 10^{308}$ & Flie{\ss}kommazahlen \rule{0pt}{2.5ex}\\
|
||||||
int16 & 64 bit & $-2^{15} bis 2^{15}-1$ & Digitalisierte Spannungen. \\ \cline{1-4}
|
int & 64 bit & $-2^{31}$ bis $2^{31}-1$ & Ganzzahlige Werte \\
|
||||||
uint8 & 64 bit & 0 bis 255 & Digitalisierte Imaging Daten. \\ \cline{1-4}
|
int16 & 64 bit & $-2^{15}$ bis $2^{15}-1$ & Digitalisierte Spannungen. \\
|
||||||
& & &
|
uint8 & 64 bit & $0$ bis $255$ & Digitalisierte Imaging Daten. \\ \hline
|
||||||
\end{tabular}
|
\end{tabular}
|
||||||
\end{table}
|
\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
|
Daten gespeichert werden. Dennoch lohnt es sich, sich ein wenig mit
|
||||||
den Datentypen auseinanderzusetzen. Ein Szenario, dass in der
|
den Datentypen auseinanderzusetzen. Ein Szenario, dass in der
|
||||||
Neurobiologie nicht selten ist, ist, dass wir die elektrische
|
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
|
mittels Messkarte digitalisiert und auf dem Rechner
|
||||||
gespeichert. Typischerweise k\"onnen mit solchen Messkarten Spannungen
|
gespeichert. Typischerweise k\"onnen mit solchen Messkarten Spannungen
|
||||||
im Bereich $\pm 10$\,V gemessen werden. Die Aufl\"osung der Wandler
|
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
|
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
|
Rechner abzulegen. Die Daten als ``echte'' Spannungen, also als
|
||||||
Flie{\ss}kommawerte, abzulegen w\"urde den 4-fachen Speicherplatz
|
Flie{\ss}kommawerte, abzulegen w\"urde den 4-fachen Speicherplatz
|
||||||
ben\"otigen.
|
ben\"otigen.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
\section{Vektoren und Matrizen}
|
\section{Vektoren und Matrizen}
|
||||||
|
|
||||||
\begin{definition}[Vektoren und Matrizen]
|
%\begin{definition}[Vektoren und Matrizen]
|
||||||
Vektoren und Matrizen sind die wichtigsten Datenstrukturen in
|
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
|
bzw. mehrdimensionalen Feldern. Felder sind Datenstrukturen, die
|
||||||
mehrere Werte des geleichen Datentyps in einer Variablen
|
mehrere Werte des geleichen Datentyps in einer Variablen
|
||||||
vereinen. Da Matalb seinen Ursprung in der Verarbeitung von
|
vereinen. Da Matalb seinen Ursprung in der Verarbeitung von
|
||||||
mathematischen Vektoren und Matrizen hat werden sie hier auch so
|
mathematischen Vektoren und Matrizen hat, werden sie hier auch so
|
||||||
genannt.\\
|
genannt.
|
||||||
|
|
||||||
In Wahrheit existiert auch in Matlab kein Unterschied zwischen
|
\matlab{} macht keinen Unterschied zwischen Vektoren und Matrizen.
|
||||||
beiden Datenstrukturen. Im Hintergrund sind auch Vektoren
|
Vektoren sind 2-dimsensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e 1
|
||||||
2-diemsensionale Matrizen bei denen eine Dimension die Gr\"o{\ss}e 1
|
|
||||||
hat.
|
hat.
|
||||||
\end{definition}
|
%\end{definition}
|
||||||
|
|
||||||
|
|
||||||
\subsection{Vektoren}
|
\subsection{Vektoren}
|
||||||
|
|
||||||
Im Gegensatz zu den Variablen, die einzelene Werte beinhalten,
|
Im Gegensatz zu Variablen, die einzelene Werte beinhalten
|
||||||
Skalare, kann ein Vektor mehrere Werte des gleichen Datentyps
|
(Skalare), kann ein Vektor mehrere Werte des gleichen Datentyps
|
||||||
beinhalten (Abbildung \ref{vectorfig} B). Die Variable ``test''
|
beinhalten (Abbildung \ref{vectorfig} B). Die Variable ``test''
|
||||||
enth\"alt in diesem Beispiel vier ganzzahlige Werte.
|
enth\"alt in diesem Beispiel vier ganzzahlige Werte.
|
||||||
|
|
||||||
|
|
||||||
\begin{figure}
|
\begin{figure}
|
||||||
\includegraphics[width=0.8\columnwidth]{scalarArray}
|
\includegraphics[width=0.8\columnwidth]{scalarArray}
|
||||||
\caption{\textbf{Skalare und Vektoren. A)} Eine skalare Variable kann
|
\caption{\textbf{Skalare und Vektoren. A)} Eine skalare Variable kann
|
||||||
genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer
|
genau einen Wert tragen. \textbf{B)} Ein Vektor kann mehrer
|
||||||
Werte des gleichen Datentyps (z.B. ganzzahlige Integer Werte)
|
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}
|
(columnvector).}\label{vectorfig}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Das folgende Listing zeigt, wie einfache Vektoren erstellt werden
|
Das folgende Listing zeigt, wie einfache Vektoren erstellt werden
|
||||||
k\"onnen.
|
k\"onnen.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=arrayListing1, caption={Erstellen einfacher Zeilenvektoren.}]
|
\begin{lstlisting}[label=arrayListing1, caption={Erstellen einfacher Zeilenvektoren.}]
|
||||||
>> a = [0 1 2 3 4 5 6 7 8 9] % Erstellen eines Zeilenvektors
|
>> a = [0 1 2 3 4 5 6 7 8 9] % Erstellen eines Zeilenvektors
|
||||||
a =
|
a =
|
||||||
@ -222,14 +212,12 @@ k\"onnen.
|
|||||||
c =
|
c =
|
||||||
0 2 4 6 8 10
|
0 2 4 6 8 10
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Die L\"ange eines Vektors kann mithilfe der Funktion \code{length()}
|
Die L\"ange eines Vektors, d.h. die Anzahl der Elemente des Vektors,
|
||||||
bestimmt werden. \"Ahnliche Information kann man \"uber die Funktion
|
kann mithilfe der Funktion \code{length()} bestimmt werden. \"Ahnliche
|
||||||
\code{size()} erhalten. Im Falle des Vektors \code{a} von oben erh\"alt
|
Information kann \"uber die Funktion \code{size()} erhalten werden. Im
|
||||||
man folgende Ausgabe:
|
Falle des Vektors \code{a} von oben erh\"alt man folgende Ausgabe:
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}]
|
\begin{lstlisting}[label=arrayListing2, caption={Gr\"o{\ss}e von Vektoren.}]
|
||||||
>> length(a)
|
>> length(a)
|
||||||
ans =
|
ans =
|
||||||
@ -238,19 +226,17 @@ ans =
|
|||||||
ans =
|
ans =
|
||||||
1 10
|
1 10
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei
|
Diese Ausgabe zeigt, dass Vektoren im Grunde 2-dimensional sind. Bei
|
||||||
einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
|
einem Zeilenvektor hat die erste Dimension die Gr\"o{\ss}e
|
||||||
1. \code{length(a)} gibt die l\"angste Ausdehnung an.
|
1. \code{length(a)} gibt die l\"angste Ausdehnung an.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=arrayListing3, caption={Spaltenvektoren.}]
|
\begin{lstlisting}[label=arrayListing3, caption={Spaltenvektoren.}]
|
||||||
>> b = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] % Erstellen eines Spaltenvektors
|
>> b = [1; 2; 3; 4; 5; 6; 7; 8; 9; 10] % Erstellen eines Spaltenvektors
|
||||||
b =
|
b =
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
....
|
...
|
||||||
9
|
9
|
||||||
10
|
10
|
||||||
>> length(b)
|
>> length(b)
|
||||||
@ -278,14 +264,13 @@ Zeilenvektor.
|
|||||||
|
|
||||||
Der Zugriff auf die Inhalte eines Vektors erfolgt \"uber den Index
|
Der Zugriff auf die Inhalte eines Vektors erfolgt \"uber den Index
|
||||||
(Abbildung \ref{vectorindexingfig}). Jedes Feld in einem Vektor hat
|
(Abbildung \ref{vectorindexingfig}). Jedes Feld in einem Vektor hat
|
||||||
einen \textit{Index} \"uber den auf die Werte des Vektors zugegriffen
|
einen fortlaufenden \textit{Index}, \"uber den auf die Werte des
|
||||||
werden kann. Dabei spielt es keine Rolle, ob es sich um einen Zeilen-
|
Vektors zugegriffen werden kann. Dabei spielt es keine Rolle, ob es
|
||||||
oder Spaltenvektor handlet. \textbf{Achtung!} Anders als viele andere
|
sich um einen Zeilen- oder Spaltenvektor handelt. \textbf{Achtung!}
|
||||||
Sprachen beginnt Matlab mit dem Index 1. Die Listings
|
Anders als viele andere Sprachen beginnt \matlab{} mit dem Index
|
||||||
\ref{arrayListing4} und \ref{arrayListing5} zeigen wie man mit dem
|
1. Die Listings \ref{arrayListing4} und \ref{arrayListing5} zeigen wie
|
||||||
Index auf die Inhalte zugreifen kann.
|
man mit dem Index auf die Inhalte zugreifen kann.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=arrayListing4, caption={Zugriff auf den Inhalt von Vektoren I}]
|
\begin{lstlisting}[label=arrayListing4, caption={Zugriff auf den Inhalt von Vektoren I}]
|
||||||
>> a = (11:20);
|
>> a = (11:20);
|
||||||
>> a(1) % das 1. Element
|
>> a(1) % das 1. Element
|
||||||
@ -298,42 +283,34 @@ ans =
|
|||||||
ans =
|
ans =
|
||||||
20
|
20
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Hierbei kann man auf einzelne Werte zugreifen oder, analog zur
|
Hierbei kann auf einzelne Werte zugegriffen werden oder, analog zur
|
||||||
Erzeugung von Vektoren, die \code{:} Notation verwenden um auf mehrere
|
Erzeugung von Vektoren, die \code{:} Notation verwendet werden, um auf mehrere
|
||||||
Element gleichzeitig zuzugreifen.
|
Element gleichzeitig zuzugreifen.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[caption={Zugriff auf den Inhalt von Vektoren I}, label=arrayListing5]
|
\begin{lstlisting}[caption={Zugriff auf den Inhalt von Vektoren I}, label=arrayListing5]
|
||||||
>> a([1 3 5]) % das 1., 3. und 5. Element
|
>> a([1 3 5]) % das 1., 3. und 5. Element
|
||||||
ans =
|
ans =
|
||||||
11 13 15
|
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 =
|
ans =
|
||||||
12 13 14
|
12 13 14
|
||||||
>> a(1:2:end) %jedes zweite Element
|
>> a(1:2:end) %jedes zweite Element
|
||||||
ans =
|
ans =
|
||||||
11 13 15 17 19
|
11 13 15 17 19
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
\paragraph{Frage:}
|
\begin{exercise}{vectorsize.m}{}
|
||||||
Der R\"uckgabewert von \code{size(a)} ist wieder ein Vektor der
|
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
|
L\"ange 2. Wie k\"onnte man also die Gr\"o{\ss}e von \code{a} in der
|
||||||
zweiten Dimension herausfinden?
|
zweiten Dimension herausfinden?
|
||||||
|
\end{exercise}
|
||||||
\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))}).
|
|
||||||
|
|
||||||
|
|
||||||
\subsubsection{Operationen auf Vektoren}
|
\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.
|
\ref{arrayListing5} zeigt Rechnungen mit Vektoren.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[caption={Rechnen mit Vektoren.},label=arrayListing5]
|
\begin{lstlisting}[caption={Rechnen mit Vektoren.},label=arrayListing5]
|
||||||
>> a = (0:2:8);
|
>> a = (0:2:8);
|
||||||
>> a + 5 % addiere einen Skalar
|
>> a + 5 % addiere einen Skalar
|
||||||
@ -360,29 +337,27 @@ ans =
|
|||||||
??? Error using ==> plus
|
??? Error using ==> plus
|
||||||
Matrix dimensions must agree.
|
Matrix dimensions must agree.
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Wird ein Vektor mit einem skalaren Wert verrechnet, dann ist das
|
Wird ein Vektor mit einem skalaren Wert verrechnet, dann ist das
|
||||||
Problemlos m\"oglich. Bei der Multiplikation (Zeile 10), der Division
|
problemlos m\"oglich. Bei der Multiplikation (Zeile 10), der Division
|
||||||
(Zeile 14) und auch der Potenzierung sollte man mit vorangestellem '.'
|
(Zeile 14) und auch der Potenzierung mu{\ss} mit vorangestellem '.'
|
||||||
klar machen, dass es sich um einen \textit{elementweise} Verarbeitung
|
klar gemacht werden, dass es sich um eine \textit{elementweise}
|
||||||
handelt. F\"ur diese elementweisen Operationen kennt Matlab die
|
Verarbeitung handeln soll. F\"ur diese elementweisen Operationen kennt
|
||||||
Operatoren \code{.*, ./} und \code{.\^}. Die einfachen Operatoren sind
|
\matlab{} die Operatoren \code{.*}, \code{./} und \code{.\^}. Die
|
||||||
im Kontext von Vektoren und Matrizen anders belegt, als man es
|
einfachen Operatoren \code{*}, \code{/} und \code{\^} sind mit den
|
||||||
vielleicht erwarten w\"urde. Es sind dann die entsprechenden
|
entsprechenden Matrixoperationen aus der linearen Algebrar belegt
|
||||||
Matrixoperationen, die man aus der linearen Algebrar kennt (s.u.).
|
(s.u.).
|
||||||
|
|
||||||
Zu Beachten ist des Weiteren noch die Fehlermeldung am SChluss von
|
Zu Beachten ist des Weiteren noch die Fehlermeldung am Schluss von
|
||||||
Listing \ref{arrayListing5}. Wenn zwei Vektoren (elementweise)
|
Listing \ref{arrayListing5}. Wenn zwei Vektoren (elementweise)
|
||||||
miteinander verrechnet werden sollen muss nicht nur die Anzahl Element
|
miteinander verrechnet werden sollen, muss nicht nur die Anzahl der Elemente
|
||||||
übereinstimmen sondern es muss auch das Layout (Zeilen- oder
|
übereinstimmen, sondern es muss auch das Layout (Zeilen- oder
|
||||||
Spaltenvektoren) \"ubereinstimmen.
|
Spaltenvektoren) \"ubereinstimmen.
|
||||||
|
|
||||||
|
|
||||||
Will man Elemente aus einem Vektor entfernen, dann weist man den
|
Will man Elemente aus einem Vektor entfernen, dann weist man den
|
||||||
entsprechenden Zellen einen leeren Wert (\code{[]}) zu.
|
entsprechenden Zellen einen leeren Wert (\code{[]}) zu.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=arrayListing6, caption={L\"oschen von Elementen aus einem Vektor.}]
|
\begin{lstlisting}[label=arrayListing6, caption={L\"oschen von Elementen aus einem Vektor.}]
|
||||||
>> a = (0:2:8);
|
>> a = (0:2:8);
|
||||||
>> length(a)
|
>> length(a)
|
||||||
@ -400,17 +375,15 @@ ans =
|
|||||||
2
|
2
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
|
|
||||||
Neben dem L\"oschen von Vektorinhalten kann man Vektoren auch
|
Neben dem L\"oschen von Vektorinhalten k\"onnen Vektoren auch
|
||||||
erweitern oder zusammensetzen. Auch hier muss das Layout der Vektoren
|
erweitert oder zusammengesetzt werden. Auch hier muss das Layout der Vektoren
|
||||||
\"ubereinstimmen (Listing \ref{arrayListing7}, Zeile 12). Will man
|
\"ubereinstimmen (Listing \ref{arrayListing7}, Zeile 12). Will man
|
||||||
einen Vektor erweitern, kann man \"uber das Ende hinaus
|
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
|
das Layout geachtet werden. Zudem ist dieser Vorgang
|
||||||
``rechenintensiv'' und man sollte, soweit m\"oglich, vermeiden
|
``rechenintensiv'' und sollte soweit m\"oglich vermieden werden.
|
||||||
Vektoren bei Bedarf einfach zu erweitern.
|
|
||||||
|
|
||||||
\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);
|
>> a = (0:2:8);
|
||||||
>> b = (10:2:19);
|
>> b = (10:2:19);
|
||||||
>> c = [a b] % erstelle einen Vektor aus einer Liste von Vektoren
|
>> 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
|
Vektor, durch \code{[]} eingeschlossen. Das \code{;} trennt die
|
||||||
einzelnen Zeilen der Matrize.
|
einzelnen Zeilen der Matrize.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=matrixListing, caption={Erzeugen von Matrizen.}]
|
\begin{lstlisting}[label=matrixListing, caption={Erzeugen von Matrizen.}]
|
||||||
>> a = [1 2 3; 4 5 6; 7 8 9]
|
>> a = [1 2 3; 4 5 6; 7 8 9]
|
||||||
>> a =
|
>> a =
|
||||||
@ -472,10 +444,9 @@ einzelnen Zeilen der Matrize.
|
|||||||
1 1 1
|
1 1 1
|
||||||
1 1 1
|
1 1 1
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Zur Defintion von mehr-dimensionalen Matrizen ist die Notation in
|
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
|
Helferfunktionen, die n-dimensionale Matrizen erstellen k\"onnen
|
||||||
(z.B. \code{ones}, Zeile 7). Sollte sich die Notwendigkeit ergeben
|
(z.B. \code{ones}, Zeile 7). Sollte sich die Notwendigkeit ergeben
|
||||||
mehrdimensionale Matrizen zusammenzuf\"ugen hilft die \code{cat}
|
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
|
Dimensionalit\"at der Matrize ist. Diese Art des Zugriffs wird
|
||||||
\textit{subsript indexing} genannt.
|
\textit{subsript indexing} genannt.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[caption={Zugriff auf Inhalte von Matrizen,
|
\begin{lstlisting}[caption={Zugriff auf Inhalte von Matrizen,
|
||||||
Indexierung.}, label=matrixIndexing]
|
Indexierung.}, label=matrixIndexing]
|
||||||
>> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen
|
>> x = randi(100, [3, 4, 5]); % 3-D Matrix mit Zufallszahlen
|
||||||
@ -527,7 +497,6 @@ ans(:,:,4) =
|
|||||||
ans(:,:,5) =
|
ans(:,:,5) =
|
||||||
56
|
56
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
Alternativ zum \textit{subscript indexing} k\"onnen die Zellen einer
|
Alternativ zum \textit{subscript indexing} k\"onnen die Zellen einer
|
||||||
Matrize auch \textit{linear} angesprochen werden (Abbildung
|
Matrize auch \textit{linear} angesprochen werden (Abbildung
|
||||||
@ -569,13 +538,12 @@ Vektoren. Matrizen k\"onnen solange elementweise miteinander
|
|||||||
Verrechnet werden, wie die Dimensionalit\"aten
|
Verrechnet werden, wie die Dimensionalit\"aten
|
||||||
\"ubereinstimmen. Besondere Vorsicht sollte man immer dann walten
|
\"ubereinstimmen. Besondere Vorsicht sollte man immer dann walten
|
||||||
lassen, wenn man Matrizen miteinander mulitplizieren, dividieren oder
|
lassen, wenn man Matrizen miteinander mulitplizieren, dividieren oder
|
||||||
postenzieren will. Hier ist es wichtig sich klarzumachen was man will:
|
potenzieren will. Hier ist es wichtig sich klarzumachen was man will:
|
||||||
Eine elementweise multiplikation (\code{.*} Operator, Listing
|
Eine elementweise Multiplikation (\code{.*} Operator, Listing
|
||||||
\ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation
|
\ref{matrixOperations} Zeile 18) oder ob eine Matrixmultiplikation
|
||||||
(\code{*} Operator, Listing \ref{matrixOperations} Zeile 12)
|
(\code{*} Operator, Listing \ref{matrixOperations} Zeile 12)
|
||||||
durchgef\"uhrt werden soll.
|
durchgef\"uhrt werden soll.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}]
|
\begin{lstlisting}[label=matrixOperations, caption={Zwei Arten von Multiplikationen auf Matrizen.}]
|
||||||
>> A = randi(10, [3, 3]) % 2-D Matrix
|
>> A = randi(10, [3, 3]) % 2-D Matrix
|
||||||
A =
|
A =
|
||||||
@ -601,13 +569,12 @@ durchgef\"uhrt werden soll.
|
|||||||
50 70 5
|
50 70 5
|
||||||
>>
|
>>
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
\section{Boolesche Operationen}
|
\section{Boolesche Operationen}
|
||||||
|
|
||||||
Boolesche Ausdr\"ucke sind Anweisungen, die zu \textit{wahr} oder
|
Boolesche Ausdr\"ucke sind Anweisungen, die zu \textit{wahr} oder
|
||||||
\textit{falsch} ausgewertet werden. Man kennt sie z.B. aus der
|
\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
|
Beziehung zwischen Entit\"aten zu testen. Hierzu werden die
|
||||||
\textit{relationalen Operatoren} (\code{>, <, ==, !}, gr\"o{\ss}er
|
\textit{relationalen Operatoren} (\code{>, <, ==, !}, gr\"o{\ss}er
|
||||||
als, kleiner als, gleich und nicht) eingesetzt. Mehrere Ausdr\"ucke
|
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.
|
auswerten l\"a{\ss}t.
|
||||||
|
|
||||||
Tabelle \ref{logicaloperators} zeigt die logischen Operatoren, die in
|
Tabelle \ref{logicaloperators} zeigt die logischen Operatoren, die in
|
||||||
Matlab definiert sind. Zu bemerken sind hier noch die \code{\&\&} und
|
\matlab{} definiert sind. Zu bemerken sind hier noch die \code{\&\&} und
|
||||||
\code{||} Operatoren. Man kann beliebige Ausdr\"ucke verkn\"uepfen und
|
\code{||} Operatoren. Man kann beliebige Ausdr\"ucke verkn\"upfen und
|
||||||
h\"aufig kann schon anhand des ersten Ausdrucks entschieden werden, ob
|
h\"aufig kann schon anhand des ersten Ausdrucks entschieden werden, ob
|
||||||
der gesamte Boolesche Ausdruck zu wahr oder falsch ausgewertet werden
|
der gesamte Boolesche Ausdruck zu wahr oder falsch ausgewertet werden
|
||||||
wird. Wenn zwei Aussagen mit einem UND verkn\"upft werden und der
|
wird. Wenn zwei Aussagen mit einem UND verkn\"upft werden und der
|
||||||
erste zu falsch ausgewerte wird, dann muss der zweite gar nicht mehr
|
erste zu falsch ausgewerte wird, dann muss der zweite gar nicht mehr
|
||||||
gepr\"uft werden. Die Verwendung der ``short-circuit'' Versionen spart
|
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.
|
\code{xor(A, B)} verf\"ugbar.
|
||||||
|
|
||||||
\begin{table}[th]
|
\begin{table}[th]
|
||||||
\caption{\label{logicaloperators}
|
\caption{\label{logicaloperators}
|
||||||
\textbf{Logische Operatoren in Matlab.}}
|
\textbf{Logische Operatoren in \matlab.}}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{tabular}{c|c}
|
\begin{tabular}{c|c}
|
||||||
\hline
|
\hline
|
||||||
@ -684,7 +651,7 @@ auf Dinge wie Gleicheit (\code{==}) gr\"o{\ss}er oder kleiner als
|
|||||||
|
|
||||||
\begin{table}[th]
|
\begin{table}[th]
|
||||||
\caption{\label{relationaloperators}
|
\caption{\label{relationaloperators}
|
||||||
\textbf{Relationale Operatoren in Matlab.}}
|
\textbf{Relationale Operatoren in \matlab.}}
|
||||||
\begin{center}
|
\begin{center}
|
||||||
\begin{tabular}{c|c}
|
\begin{tabular}{c|c}
|
||||||
\hline
|
\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
|
Das Ergebnis eines Booleschen Ausdrucks ist immer vom Datentyp
|
||||||
\textit{logical}. Man kann jede beliebige Variable zu wahr oder falsch
|
\textit{logical}. Man kann jede beliebige Variable zu wahr oder falsch
|
||||||
auswerten indem man in den Typ \textit{logical} umwandelt. Dabei
|
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
|
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
|
\code{false}. Diese sind jedoch nur Synonyme f\"ur die
|
||||||
\textit{logical} Werte 1 und 0. Man beachte, dass der
|
\textit{logical} Werte 1 und 0. Man beachte, dass der
|
||||||
Zuweisungsoperator \code{=} und der logische Operator \code{==} zwei
|
Zuweisungsoperator \code{=} und der logische Operator \code{==} zwei
|
||||||
grundverschiedene Dinge sind. Da sie umgangsprachlich gleich sind kann
|
grundverschiedene Dinge sind. Da sie umgangsprachlich gleich sind kann
|
||||||
man sie leider leicht verwechseln.
|
man sie leider leicht verwechseln.
|
||||||
|
|
||||||
\footnotesize
|
|
||||||
\begin{lstlisting}[caption={Boolesche Ausdr\"ucke.}, label=booleanexpressions]
|
\begin{lstlisting}[caption={Boolesche Ausdr\"ucke.}, label=booleanexpressions]
|
||||||
>> true
|
>> true
|
||||||
ans =
|
ans =
|
||||||
@ -751,7 +717,6 @@ ans =
|
|||||||
ans =
|
ans =
|
||||||
1 0 1 1 0
|
1 0 1 1 0
|
||||||
\end{lstlisting}
|
\end{lstlisting}
|
||||||
\normalsize
|
|
||||||
|
|
||||||
|
|
||||||
\section{Logisches Indizieren}\label{logicalindexingsec}
|
\section{Logisches Indizieren}\label{logicalindexingsec}
|
||||||
@ -759,7 +724,7 @@ ans =
|
|||||||
|
|
||||||
\section{Kontrollstrukturen}\label{controlstructsec}
|
\section{Kontrollstrukturen}\label{controlstructsec}
|
||||||
|
|
||||||
\begin{definition}[Kontrollstrukturen]
|
%\begin{definition}[Kontrollstrukturen]
|
||||||
In der Regel wird ein Programm Zeile f\"ur Zeile von oben nach unten
|
In der Regel wird ein Programm Zeile f\"ur Zeile von oben nach unten
|
||||||
ausgef\"uhrt. Manchmal muss der Kontrollfluss aber so gesteuert
|
ausgef\"uhrt. Manchmal muss der Kontrollfluss aber so gesteuert
|
||||||
werden, dass bestimmte Teile des Programmcodes wiederholt oder nur
|
werden, dass bestimmte Teile des Programmcodes wiederholt oder nur
|
||||||
@ -770,7 +735,7 @@ ans =
|
|||||||
\item Schleifen.
|
\item Schleifen.
|
||||||
\item Bedingte Anweisungen und Verzweigungen.
|
\item Bedingte Anweisungen und Verzweigungen.
|
||||||
\end{enumerate}
|
\end{enumerate}
|
||||||
\end{definition}
|
%\end{definition}
|
||||||
|
|
||||||
|
|
||||||
\section{Skripte und Funktionen}
|
\section{Skripte und Funktionen}
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
\subsection{Variablen}
|
\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
|
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
|
bin\"ar gespeichert. Wird auf den Wert der Variable zugegriffen, wird
|
||||||
dieses Bitmuster je nach Datentyp interpretiert. Das Beispiel in
|
dieses Bitmuster je nach Datentyp interpretiert. Das Beispiel in
|
||||||
Abbildung \ref{variablefig} zeigt, dass das gleiche Bitmuster im einen
|
Abbildung \ref{variablefig} zeigt, dass das gleiche Bitmuster im einen
|
||||||
@ -73,8 +73,8 @@ Leerzeichen in Variablennamen nicht erlaubt.
|
|||||||
|
|
||||||
\subsection{Arbeiten mit Variablen}
|
\subsection{Arbeiten mit Variablen}
|
||||||
|
|
||||||
Nat\"urlich kann man mit den Variablen auch arbeiten, bzw
|
Nat\"urlich kann mit den Variablen auch gearbeitet, bzw
|
||||||
rechnen. Matlab kennt alle normalen arithmetischen Operatoren wie
|
gerechnet werden. Matlab kennt alle normalen arithmetischen Operatoren wie
|
||||||
\code{+, -, *. /}. Die Potenz wird \"uber das Dach Symbol \verb+^+
|
\code{+, -, *. /}. Die Potenz wird \"uber das Dach Symbol \verb+^+
|
||||||
dargestellt. Das folgende Listing zeigt, wie sie benutzt werden.
|
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
|
Beachtenswert ist z.B. in Zeilen 3 und 6, dass wir mit dem Inhalt
|
||||||
einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert
|
einer Variablen rechnen k\"onnen, ohne dass dadurch ihr Wert
|
||||||
ver\"andert w\"urde. Wenn der Wert einer Variablen ver\"andert werden
|
ver\"andert wird. Wenn der Wert einer Variablen ver\"andert werden
|
||||||
soll, dann muss dieser der Variable expliyit zugewiesen werden (mit
|
soll, dann muss dieser der Variable explizit zugewiesen werden (mit
|
||||||
dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt
|
dem \code{=} Zuweisungsoperator, z.B. Zeilen 16, 20). Zeile 25 zeigt
|
||||||
wie eine einzelne Variable gel\"oscht wird.
|
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}
|
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}
|
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}
|
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{tabular}
|
||||||
\end{table}
|
\end{table}
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
g\documentclass[12pt]{report}
|
\documentclass[12pt]{report}
|
||||||
|
|
||||||
\input{header}
|
\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:
|
% plain hist:
|
||||||
%hist(d)
|
%hist(d)
|
||||||
|
|
||||||
% check bin counts of plain hist:
|
|
||||||
% h = hist(d)
|
|
||||||
|
|
||||||
% force 6 bins:
|
% force 6 bins:
|
||||||
%hist(d, 6)
|
%hist(d, 6)
|
||||||
|
|
||||||
|
@ -13,14 +13,3 @@ bar(b2,h2, 'facecolor', 'r' )
|
|||||||
xlabel('x')
|
xlabel('x')
|
||||||
ylabel('Frequency')
|
ylabel('Frequency')
|
||||||
hold off
|
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 numpy as np
|
||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
#x = np.random.randn( 40, 10 )
|
rng = np.random.RandomState(981)
|
||||||
#np.save('boxwhiskerdata', x )
|
x = rng.randn( 40, 10 )
|
||||||
x = np.load('boxwhiskerdata.npy')
|
|
||||||
|
|
||||||
plt.xkcd()
|
plt.xkcd()
|
||||||
fig = plt.figure( figsize=(6,4) )
|
fig = plt.figure( figsize=(6,4) )
|
||||||
@ -16,27 +15,27 @@ ax.set_xlabel('Experiment')
|
|||||||
ax.set_ylabel('x')
|
ax.set_ylabel('x')
|
||||||
ax.set_ylim( -4.0, 4.0)
|
ax.set_ylim( -4.0, 4.0)
|
||||||
ax.annotate('Median',
|
ax.annotate('Median',
|
||||||
xy=(3.9, 0.1), xycoords='data',
|
xy=(3.9, 0.0), xycoords='data',
|
||||||
xytext=(3.5, -2.5), textcoords='data', ha='right',
|
xytext=(3.5, -2.7), textcoords='data', ha='right',
|
||||||
arrowprops=dict(arrowstyle="->", relpos=(0.8,1.0),
|
arrowprops=dict(arrowstyle="->", relpos=(0.8,1.0),
|
||||||
connectionstyle="angle3,angleA=-110,angleB=60") )
|
connectionstyle="angle3,angleA=-110,angleB=60") )
|
||||||
ax.annotate('1. quartile',
|
ax.annotate('1. quartile',
|
||||||
xy=(5.8, -0.7), xycoords='data',
|
xy=(5.8, -0.9), xycoords='data',
|
||||||
xytext=(5.5, -3.5), textcoords='data', ha='right',
|
xytext=(5.5, -3.4), textcoords='data', ha='right',
|
||||||
arrowprops=dict(arrowstyle="->", relpos=(0.5,1.0),
|
arrowprops=dict(arrowstyle="->", relpos=(0.9,1.0),
|
||||||
connectionstyle="angle3,angleA=30,angleB=70") )
|
connectionstyle="angle3,angleA=30,angleB=70") )
|
||||||
ax.annotate('3. quartile',
|
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',
|
xytext=(6.5, 3.0), textcoords='data', ha='left',
|
||||||
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.0),
|
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.0),
|
||||||
connectionstyle="angle3,angleA=30,angleB=70") )
|
connectionstyle="angle3,angleA=30,angleB=70") )
|
||||||
ax.annotate('minimum',
|
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',
|
xytext=(7.2, -3.3), textcoords='data', ha='left',
|
||||||
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.5),
|
arrowprops=dict(arrowstyle="->", relpos=(0.0,0.5),
|
||||||
connectionstyle="angle3,angleA=10,angleB=100") )
|
connectionstyle="angle3,angleA=10,angleB=100") )
|
||||||
ax.annotate('maximum',
|
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',
|
xytext=(4.9, 3.5), textcoords='data', ha='right',
|
||||||
arrowprops=dict(arrowstyle="->", relpos=(1.0,0.5),
|
arrowprops=dict(arrowstyle="->", relpos=(1.0,0.5),
|
||||||
connectionstyle="angle3,angleA=0,angleB=120") )
|
connectionstyle="angle3,angleA=0,angleB=120") )
|
||||||
|
Binary file not shown.
@ -2,11 +2,12 @@ import numpy as np
|
|||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
plt.xkcd()
|
plt.xkcd()
|
||||||
fig = plt.figure( figsize=(6,5) )
|
fig = plt.figure( figsize=(6,4.6) )
|
||||||
|
rng = np.random.RandomState(2981)
|
||||||
n = 200
|
n = 200
|
||||||
for k, r in enumerate( [ 1.0, 0.6, 0.0, -0.9 ] ) :
|
for k, r in enumerate( [ 1.0, 0.6, 0.0, -0.9 ] ) :
|
||||||
x = np.random.randn( n )
|
x = rng.randn( n )
|
||||||
y = r*x + np.sqrt(1.0-r*r)*np.random.randn( n )
|
y = r*x + np.sqrt(1.0-r*r)*rng.randn( n )
|
||||||
ax = fig.add_subplot( 2, 2, k+1 )
|
ax = fig.add_subplot( 2, 2, k+1 )
|
||||||
ax.spines['right'].set_visible(False)
|
ax.spines['right'].set_visible(False)
|
||||||
ax.spines['top'].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_ylabel('y')
|
||||||
ax.set_xlim( -3.0, 3.0)
|
ax.set_xlim( -3.0, 3.0)
|
||||||
ax.set_ylim( -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.tight_layout()
|
||||||
plt.savefig('correlation.pdf')
|
plt.savefig('correlation.pdf')
|
||||||
|
@ -2,7 +2,7 @@ import numpy as np
|
|||||||
import matplotlib.pyplot as plt
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
plt.xkcd()
|
plt.xkcd()
|
||||||
fig = plt.figure( figsize=(6,3) )
|
fig = plt.figure( figsize=(6,2.2) )
|
||||||
n = 200
|
n = 200
|
||||||
x = np.random.randn( n )
|
x = np.random.randn( n )
|
||||||
y = np.random.randn( n )
|
y = np.random.randn( n )
|
||||||
|
@ -2,35 +2,22 @@
|
|||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\chapter{\tr{Descriptive statistics}{Deskriptive Statistik}}
|
\chapter{\tr{Descriptive statistics}{Deskriptive Statistik}}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
Bei der deskriptiven Statistik werden Datens\"atze durch wenige Kenngr\"o{\ss}en
|
||||||
%\section{Statistics of real-valued data}
|
\"ubersichtlich dargestellt.
|
||||||
|
|
||||||
\begin{itemize}
|
Neben dem Histogramm, das die Wahrscheinlichkeitsverteilung der Daten
|
||||||
\item Location, central tendency
|
im Detail darstellt, werden u.a. folgende Kenngr\"o{\ss}en zur Beschreibung
|
||||||
\begin{itemize}
|
der Daten eingesetzt:
|
||||||
\item arithmetic mean
|
\begin{description}
|
||||||
\item median
|
\item[Lagema{\ss}e] (``location'', ``central tendency''):
|
||||||
\item mode
|
arithmetisches Mittel, Median, Modus (``Mode'')
|
||||||
\end{itemize}
|
\item[Streuungsma{\ss}e] (``spread'', ``dispersion''): Varianz,
|
||||||
\item Spread, dispersion
|
Standardabweichung, Interquartilabstand,\linebreak Variations\-koeffizient
|
||||||
\begin{itemize}
|
(``Coefficient of variation'')
|
||||||
\item variance
|
\item[Shape]: Schiefe (``skewnees''), W\"olbung (``kurtosis'')
|
||||||
\item standard deviation
|
\item[Zusammenhangsma{\ss}e]: Pearson Korrelationskoeffizient,
|
||||||
\item interquartile range
|
Spearmans Rang\-korrelations\-koeffizient.
|
||||||
\item coefficient of variation
|
\end{description}
|
||||||
\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}
|
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
\section{\tr{Mode, median, quartile, etc.}{Modus, Median, Quartil, etc.}}
|
\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
|
die eine H\"alfte der Daten nicht gr\"o{\ss}er und die andere H\"alfte
|
||||||
nicht kleiner als der Median ist (\figref{medianfig}).
|
nicht kleiner als der Median ist (\figref{medianfig}).
|
||||||
|
|
||||||
|
\newpage
|
||||||
\begin{exercise}{mymedian.m}{}
|
\begin{exercise}{mymedian.m}{}
|
||||||
\tr{Write a function \code{mymedian} that computes the median of a vector.}
|
\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.}
|
{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.
|
\matlab{} stellt die Funktion \code{median()} zur Berechnung des Medians bereit.
|
||||||
|
|
||||||
|
\newpage
|
||||||
\begin{exercise}{checkmymedian.m}{}
|
\begin{exercise}{checkmymedian.m}{}
|
||||||
\tr{Write a script that tests whether your median function really
|
\tr{Write a script that tests whether your median function really
|
||||||
returns a median above which are the same number of data than
|
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]
|
\begin{figure}[t]
|
||||||
\includegraphics[width=1\textwidth]{boxwhisker}
|
\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}
|
\end{figure}
|
||||||
|
|
||||||
Box-Whisker Plots sind eine h\"aufig verwendete Darstellung um die
|
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.}}
|
mit der theoretischen Verteilung $P=1/6$ vergleichbar.}}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
|
\newpage
|
||||||
Bei ganzzahligen Messdaten (z.B. die Augenzahl eines W\"urfels oder
|
Bei ganzzahligen Messdaten (z.B. die Augenzahl eines W\"urfels oder
|
||||||
die Anzahl von Aktionspotentialen in einem bestimmten Zeitfenster)
|
die Anzahl von Aktionspotentialen in einem bestimmten Zeitfenster)
|
||||||
kann f\"ur jede auftretende Zahl eine Klasse definiert werden. Damit
|
kann f\"ur jede auftretende Zahl eine Klasse definiert werden. Damit
|
||||||
die H\"ohe der Histogrammbalken unabh\"angig von der Anzahl der
|
die H\"ohe der Histogrammbalken unabh\"angig von der Anzahl der
|
||||||
Messwerte wird, normiert man das Histogram auf die Anzahl der
|
Messwerte wird, wird das Histogram auf die Anzahl der
|
||||||
Messwerte (\figref{diehistogramsfig}). Die H\"ohe der
|
Messwerte normiert (\figref{diehistogramsfig}). Die H\"ohe der
|
||||||
Histogrammbalken gibt dann die Wahrscheinlichkeit $P(x_i)$ des
|
Histogrammbalken gibt dann die Wahrscheinlichkeit $P(x_i)$ des
|
||||||
Auftretens der Gr\"o{\ss}e $x_i$ in der $i$-ten Klasse an
|
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} \; . \]
|
\[ 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
|
Wahrscheinlichkeit $P(1.2<x<1.3)$, dass die Zahl $x$ einen Wert
|
||||||
zwischen 1.2 und 1.3 hat.
|
zwischen 1.2 und 1.3 hat.
|
||||||
|
|
||||||
%Der Grenzwert zu einem immer kleineren
|
Im Grenzwert zu sehr kleinen Bereichen $\Delta x$ ist die Wahrscheinlichkeit
|
||||||
%Bereich f\"uhrt uns dann zum Begriff der Wahrscheinlichkeitsdichte
|
eines Wertes $x$ zwischen $x_0$ und $x_0+\Delta x$
|
||||||
%\[ p(x) = \lim_{\Delta x \to 0}P(x_0<x<x_0+\Delta x) = P(x_0) + dP/dx \cdot \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}{}
|
\begin{figure}[t]
|
||||||
\tr{Draw 100 random data from a Gaussian distribution and plot
|
\includegraphics[width=1\textwidth]{pdfprobabilities}
|
||||||
histograms with different bin sizes of the data.} {Ziehe 100
|
\caption{\label{pdfprobabilitiesfig} Wahrscheinlichkeiten bei
|
||||||
normalverteilte Zufallszahlen und erzeuge Histogramme mit
|
einer Wahrscheinlichkeitsdichtefunktion.}
|
||||||
unterschiedlichen Klassenbreiten. Was f\"allt auf?}
|
\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}
|
\end{exercise}
|
||||||
|
|
||||||
\begin{figure}[t]
|
\begin{figure}[t]
|
||||||
@ -200,65 +229,66 @@ zwischen 1.2 und 1.3 hat.
|
|||||||
(blau).}}
|
(blau).}}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
Histogramme von reellen Messwerten m\"ussen auf das Integral 1
|
\begin{exercise}{gaussianbins.m}{}
|
||||||
normiert werden, so dass das Integral (nicht die Summe) \"uber das
|
\tr{Draw 100 random data from a Gaussian distribution and plot
|
||||||
Histogramm eins ergibt --- denn die Wahrscheinlichkeit, dass
|
histograms with different bin sizes of the data.} {Ziehe 100
|
||||||
irgendeiner der Messwerte auftritt mu{\ss} Eins sein. Das Integral ist
|
normalverteilte Zufallszahlen und erzeuge Histogramme mit
|
||||||
die Fl\"ache des Histogramms. Diese setzt sich zusammen aus der
|
unterschiedlichen Klassenbreiten. Was f\"allt auf?}
|
||||||
Fl\"ache der einzelnen Histogrammbalken. Diese haben die H\"ohe $n_i$
|
\end{exercise}
|
||||||
und die Breite $\Delta x$. Die Gesamtfl\"ache $A$ des Histogramms ist
|
|
||||||
also
|
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 \]
|
\[ 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
|
und das normierte Histogramm hat die H\"ohe
|
||||||
\[ p(x_i) = \frac{n_i}{\Delta x \sum_{i=1}^N n_i} \]
|
\[ 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
|
Es muss also nicht nur durch die Summe, sondern auch durch die Breite
|
||||||
geteilt werden.
|
$\Delta x$ der Klassen geteilt werden (\figref{pdfhistogramfig}).
|
||||||
|
|
||||||
$p(x_i)$ kann keine Wahrscheinlichkeit sein, da $p(x_i)$ nun eine
|
\begin{exercise}{gaussianbinsnorm.m}{}
|
||||||
Einheit hat --- das Inverse der Einheit der Messgr\"osse $x$. Man
|
Normiere das Histogramm der vorherigen \"Ubung zu einer Wahrscheinlichkeitsdichte.
|
||||||
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?}
|
|
||||||
\end{exercise}
|
\end{exercise}
|
||||||
|
|
||||||
|
|
||||||
\section{\tr{Correlations}{Korrelationen}}
|
\section{\tr{Correlations}{Korrelationen}}
|
||||||
|
|
||||||
\begin{figure}[t]
|
\begin{figure}[tp]
|
||||||
\includegraphics[width=1\textwidth]{correlation}
|
\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}
|
\end{figure}
|
||||||
|
|
||||||
Bisher haben wir Eigenschaften einer einzelnen Me{\ss}gr\"o{\ss}e
|
Bisher haben wir Eigenschaften einer einzelnen Me{\ss}gr\"o{\ss}e
|
||||||
angeschaut. Bei mehreren Me{\ss}gr\"o{\ss}en, kann nach
|
angeschaut. Bei mehreren Me{\ss}gr\"o{\ss}en, kann nach
|
||||||
Abh\"angigkeiten zwischen den beiden Gr\"o{\ss}en gefragt werden. Der
|
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
|
\[ 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)(y-\langle y \rangle) \rangle}{\sqrt{\langle
|
||||||
(x-\langle x \rangle)^2} \rangle \sqrt{\langle (y-\langle y
|
(x-\langle x \rangle)^2} \rangle \sqrt{\langle (y-\langle y
|
||||||
\rangle)^2} \rangle} \] quantifiziert einfache lineare
|
\rangle)^2} \rangle} \]
|
||||||
Zusammenh\"ange \matlabfun{corr}. Perfekt korrelierte Variablen ergeben einen
|
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$, antikorrelierte Daten einen
|
||||||
Korrelationskoeffizienten von $-1$ und nicht korrelierte 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}
|
\includegraphics[width=1\textwidth]{nonlincorrelation}
|
||||||
\caption{\label{nonlincorrelationfig} Nichtlineare Zusammenh\"ange
|
\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
|
die quadratische Abh\"angigkeit (links) als auch eine
|
||||||
Rauschkorrelation (rechts), bei der die Streuung der $y$-Werte von
|
Rauschkorrelation (rechts), bei der die Streuung der $y$-Werte von
|
||||||
$x$ abh\"angen, ergeben Korrelationskeffizienten nahe Null.
|
$x$ abh\"angen, ergeben Korrelationskeffizienten nahe Null.
|
||||||
|
Reference in New Issue
Block a user