Signal- und Messdatenverarbeitung


Momente incl. Korrelationskoeffizient komplexer Zufallsgrößen, mit Gewichtung

Python Matlab/Octave
Vorbereitung (Laden von Modulen/Paketen)
from numpy import *
from numpy.random import *
from matplotlib.pyplot import *
%Octave: pkg load statistics
%Matlab: erfordert die Statistics and Machine Learning Toolbox
Generieren von N Werten xi mit i=0N1 (normalverteilte Zufallsgröße als Beispiel, mit dem Erwartungswert μ=3+1𝐢 und der Standardabweichung σ=1) mit einer vom Wert abhängigen Annahmewahrscheinlichkeit (verschobene Sigmoidfunktion als Beispiel)
N=100
mu=3+1j
sigma=1
x=zeros(N)+0j
for i in range(0,N):
  x[i]=normal(real(mu),sigma/sqrt(2))+1j*normal(imag(mu),sigma/sqrt(2))
  while random()>1/(1+exp(-abs(x[i]-mu))):
    x[i]=normal(real(mu),sigma/sqrt(2))+1j*normal(imag(mu),sigma/sqrt(2))
  

plot(real(x),'o',imag(x),'o')
show()
N=100;
mu=3+1j;
sigma=1;
x=zeros(1,N)+0j;
for i=1:N
x(i)=normrnd(real(mu),sigma/sqrt(2))+1j*normrnd(imag(mu),sigma/sqrt(2));
while rand>1/(1+exp(-abs(x(i)-mu)))
x(i)=normrnd(real(mu),sigma/sqrt(2))+1j*normrnd(imag(mu),sigma/sqrt(2));
end
end
plot((1:N),real(x),'o',(1:N),imag(x),'o')
Generieren von N reellen Gewichten gi mit i=0N1, passend zu den xi mit i=0N1 mit invertierter Annahmewahrscheinlichkeit (verschobene Sigmoidfunktion)
g=1+exp(-abs(x-mu))
plot(g,'o')
show()
g=1+exp(-abs(x-mu));
plot(g,'o')
Mittelwert x=i=0N1gixii=0N1gi
sum(g*x)/float(sum(g))
sum(g.*x)/sum(g)
Varianz (ohne Bessel-Korrektur, asymptotisch erwartungstreu) s2=i=0N1gi(xix)*(xix)i=0N1gi=i=0N1gi|xix|2i=0N1gi
=i=0N1gixi*xii=0N1gix*x=i=0N1gi|xi|2i=0N1gi|x|2
sum(g*abs(x)**2)/float(sum(g))-abs(sum(g*x)/float(sum(g)))**2
sum(g.*abs(x).^2)/sum(g)-abs(sum(g.*x)/sum(g))^2
Varianz (mit Bessel-Korrektur, nur für unabhängige xi erwartungstreu) s2=(i=0N1gi)[i=0N1gi(xix)*(xix)](i=0N1gi)2(i=0N1gi2)=(i=0N1gi)(i=0N1gi|xix|2)(i=0N1gi)2(i=0N1gi2)
=(i=0N1gi)(i=0N1gixi*xi)(i=0N1gi)2x*x(i=0N1gi)2(i=0N1gi2)=(i=0N1gi)(i=0N1gi|xi|2)(i=0N1gi)2|x|2(i=0N1gi)2(i=0N1gi2)
=(i=0N1gi)(i=0N1gixi*xi)(i=0N1gixi)*(i=0N1gixi)(i=0N1gi)2(i=0N1gi2)=(i=0N1gi)(i=0N1gi|xi|2)|i=0N1gixi|2(i=0N1gi)2(i=0N1gi2)
(sum(g)*sum(g*abs(x)**2)-abs(sum(g*x))**2)/float(sum(g)**2-sum(g**2))
(sum(g)*sum(g.*abs(x).^2)-abs(sum(g.*x))^2)/(sum(g)^2-sum(g.^2))
Varianz (mit Bessel-Korrektur für korrelierte Daten, erwartungstreu, nur für Leistungssignale, s. hier)
Korrelationskoeffizient (nur für zwei Signale oder Zufallsgrößen, s. hier für Leistungssignale oder hier für periodische Signale)