Diplomarbeit_Vorlage_von_Holger_Matthes

Werbung
Stochastische Signalverarbeitung
Versuch 1
Zufallsvariable und Zufallszahlen
1. Vorbereitung
1.1 Gleichverteilung
Wahrscheinlichkeitsdichte und Verteilungsfunktion einer auf [a,b] gleichverteilten ZV X:
1
(u ( x  a)  u ( x  b)), mit _ a  b
ba
1
Fx ( x) 
(( x  a )u ( x  a)  ( x  b)u ( x  b))
ba
f x ( x) 
Quelle S.15 Skript
xa
0
1
ba
1
f ( x) 
a xb
xb
Erwartungswert und Varianz einer auf [a,b] gleichverteilten ZV X:
Für eine ZV X mit der Dichte fx(x):
1
ab
EX   xf x x dx 
xdx 


ba a
2
b

Quelle S.36 Skript
Absolute Konvergenz ist in beiden Fällen vorauszusetzen.
Var( X )  E ( X  EX ) 2  EX 2  ( EX ) 2   2
Quelle S.41 Skript
1
1 b3  a3  a  b 
1
ab
2
x
dx



4b 2  4ab  4a 2  3a 2  6ab  3b 2


 

ba a
3 ba
12
 2 
 2 
1
Var ( X )  (b  a)
12
b
Var ( X ) 
2
2


1.2 Normalverteilung
Wahrscheinlichkeitsdichte und Verteilungsfunktion einer auf [a,b] normalverteilten ZV X:
f x ( x) 
1
( x )2
e
2 2
2 
x
Fx ( x)  

  
,   ,   0
Quelle S.18 Skript
Die Verteilungsfunktion kann nicht geschlossen dargestellt werden. Sie steht aber in
tabellarischer Form zu Verfügung für gegebene n und  . Fx ist die Transformation einer
Normalverteilung in eine Standartnormalverteilung. So kann man über diese Formel die
Werte aller Normalverteilungen ablesen.
1.3 Diskretes Weißes Rauschen
Ist ein stationärer Prozess Zn aus stoch. unabh. und identisch verteilten ZV mit
verschwindendem Gleichanteil:
E[ Z n ]  0
Quelle S.107 Böhme
für alle n. Vgl. mit dem Modell der Unendlich ausgedehnten Stichprobe. Die Dichte fz(z)
aller Zn beschreibt den Prozess vollständig.
Kovarianz und Spektrum:
c zz (k )   z2 k
C zz (k )   z2
Quelle S.107ff. Böhme
1.4 Monte-Carlo-Methode
Man wählt hierzu zufällige Punkte
( x, y x  [1..1]  y  [1..1])
aus und überprüft, ob diese innerhalb des Einheitskreises liegen. Die sich ergebende
Wahrscheinlichkeitsverteilung P(Im Kreis) stellt die Fläche eines Viertels des
Einheitskreises dar. Pi kann nun mit folgender Formel berechnet werden:
Kreisfläche
r 2

Treffer _ in _ Kreisfläche

 
 P(Im_ Kreis )
2
Quadratfläche (2  r )
4 Anzahl _ generierter _ punkte
So wird das Flächenverhältnis in eine Wahrscheinlichkeit übersetzt.
Quelle http://de.wikipedia.org/wiki/Monte-Carlo-Algorithmus#Probabilistische_Bestimmung_der_Zahl_Pi
Versuche am Rechner
2.1 Mittelwert und Streuung
Darstellung der gleichverteilten ZV:
Code der zu Erstellung Implementiert wurde:
close all
clear all
n=1000;
a=0;
b=0;
randn('seed',3);
v=rand(n,1);
plot(v)
Hier folgt nun der Code der zur Erfüllung der ersten Aufgabe geführt hat:
close all
load('dat1_1');
%for next
a=0;
b=0;
for i=1:n
a = a + abs(v(i));
end
%mittelwert
m = a/n
for j=1:n
b = b + (v(j)-m)^2;
end
%streunung
s=1/(n-1)*b
%sumlength
msumlenght = sum(abs(v))/length(v)
ssumlength = 1/(n-1)*sum((v-sum(v)/length(v)).^2)
%meanscov
mmean = mean(v)
scov = cov(v)
Der Code liefert folgende Ergebnisse:
m =0.481072439950572
s =0.084656189908093
msumlenght =0.481072439950572
s =0.084656189908093
mmean =0.481072439950572
scov =0.084656189908093
Die Ergebnisse stimmen exakt überein. Dies ist auch nicht verwunderlich, da MATLAB in
den eigenen Funktionen mean.m und cov.m auch mit den befehlen size, length und sum
arbeitet. So das die Berechnung auf den 3 hier gezeigten Niveaus schlussendlich identisch
sind.
2.2 Empirische Kovarianzfunktion
Folgender Code berechnet die Kovarianz (c_xx) und die modifizierte Kovarianz(c_xx_k)
eines Vektors der Länge v welcher in diesem fall mit den ersten 200 Daten von dat1_1 gefüllt
war.
function [c_xx,c_xx_k] = kovfkt(v)
close all
n=length(v);
a=0;
for i=1:n
a = a + v(i);
end
m = a/n;
for j=1:(2*n-1)
k=j-n;
c=0;
for i=1:(n-abs(k))
c = c + (v(i+abs(k))- m)*(v(i)-m);
end
c_xx(j) = 1/n*c;
c_xx_k(j)=1/(n-abs(k))*c;
end
err=c_xx-1/n*xcov(v)';
subplot(3,1,1), plot((-n+1):(n-1),c_xx)
subplot(3,1,2), plot((-n+1):(n-1),c_xx_k)
subplot(3,1,3), plot((-n+1):(n-1),err)
Abbildungsbeschreibung:
Erster Graph: Empirische
Kovarianzfunktion
x-achse: k
y-achse: cxx(k)
Zweiter Graph:
Modifizierte Empirische
Kovarianz-funktion
x-achse: k
y-achse: cxx(k)
Dritter Graph:
Differenz cxx-xcov
x-achse: k
y-achse: fehler(k)
Die beiden Funktionen unterscheiden sich lediglich in ihren Normierungen. Währen die
normale Kovarianzfunktion immer auf n normiert obwohl die sich überschneidenden Stücke
zum Rand hin immer weiter verkleinern, berücksichtigt dies der Ausdruck (n-abs(k)) bei der
modifizierten Kovarianzfunktion. Somit ist bei c_xx_k ein Anstieg der Funktion im
Randbereicht zu erwarten. Bei der Implementierung sind wir ein wenig vom Skript
abgewichen und haben jeweils beide Funktionen berechnet, um eine bessere Dar-/Gegenüberstellung zu erlangen. Das Ergebnis ist in der folgenden Abbildung zu sehn.
An erster Stelle: c_xx. An zweiter Stelle: c_xx_k. An dritter Stelle: der Fehler. Der Fehler
wurde einfach über die Differenz von c_xx und der MATLAB-Funktion xcov berechnet. Es
ist zu beachten das xcov kein normiertes Ergebnis erzeugt.
Weiterhin ist an dem Graphen interpretierbar, dass eine Folge von Zufallszahlen eine
Realisierung diskreten weißen Rauschens ist. Man erkennt dies an Ähnlichkeit des ersten
Graphen zur Dirac-Stoß der charakteristisch für diskretes weißes Rauschen ist.
2.3 Dichte und Histogramm
Ergebnisdiagramm der Dichtefunktion: Die oberen beiden Graphiken stellen die
Gleichverteilung dar. Der zweite Graph veranschaulicht die den Unterschied zwischen der
empirischen (blau) und der theoretisch idealen Dichte der Gleichverteilung. Analog dazu sind
die unteren beiden Graphen zu betrachten. Sie geben die Ergebnisse für 1000
standardnormalverteilte Zufallszahlen wieder.
Im folgenden der Funktionscode:
function [d]=dichte(v,s)
close all
%histogrammfkt
[h, x]=hist(v);
[f, w]=hist(s);
%zur idealisierten darstellung der dichte
g=ones(length(x),1);
fx=1/(sqrt(2*pi))*exp(-(w.^2)/2);
a=length(v)*(x(2)-x(1));
%auftragen der häufigkeiten über x (GV)
subplot(4,1,1),bar(x,h/a), xlabel('x'),ylabel('Haeufigkeit'), title('GV');
subplot(4,1,2),hold all,plot(x,h/a), plot(x,g), xlabel('x'),ylabel('Dichte
f(x)'), title('GV');
%(SNV)
b=length(s)*(w(2)-w(1));
subplot(4,1,3),bar(w,f/b), xlabel('x'), ylabel('Haeufigkeit'),
title('SNV');
subplot(4,1,4),hold all,plot(w,f/b),plot(w,fx), xlabel('x'),ylabel('Dichte
f(x)'), title('SNV');
end
2.4 Verteilungsfunktion und Häufigkeit
Folgender Code führte zum Ergebnis:
close all
%laden der daten
load 'dat1_1.mat';
load 'dat1_2.mat';
%sortieren der vektoren zur darstellung
v2=sort(v);
s2=sort(s);
%linspace erstellt eine achse
x=linspace(1/length(v),1,length(v));
subplot(2,1,1),plot(v2,x), xlabel('x'), ylabel('Haeufigkeit H(X<=x)'),
title('GV');
subplot(2,1,2),plot(s2,x), xlabel('x'), ylabel('Haeufigkeit H(X<=x)'),
title('NV');
Die obere Grafik zeigt die Gleichverteilung und die untere die Normalverteilung. Auf der
jeweiligen y-Achse wurden die Häufigkeiten H(X<=x) aufgetragen.
2.5 Monte-Carlo-Methode zur Schätzung von pi
Folgender Code führte zum Ergebnis:
Anzahl an Zufallszahlen im Einheitskreis
n = 15729
Schätzung für pi:
p = 3.1458
close all
n=0;
eps=20000;
randn('seed',3);
for i=1:eps
x(i)=rand(1,1);
y(i)=rand(1,1);
if sqrt(x(i)^2+y(i)^2)<=1
n=n+1;
end
end
p = 4*n/eps
Herunterladen