Signal- und Messdatenverarbeitung


Momente incl. Korrelationskoeffizient reeller Zufallsgrößen, ohne 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 und der Standardabweichung σ=1)
N=100
mu=3
sigma=1
x=normal(mu,sigma,N)
plot(x,'o')
show()
N=100;
mu=3;
sigma=1;
x=normrnd(mu,sigma,[1,N]);
plot(x,'o')
Mittelwert x=1N(i=0N1xi)
mean(x)
mean(x)
Varianz (ohne Bessel-Korrektur, asymptotisch erwartungstreu) s2=1N[i=0N1(xix)2]=1N(i=0N1xi2)x2
var(x)
var(x,1)
Varianz (mit Bessel-Korrektur, nur für unabhängige xi erwartungstreu) s2=1N1[i=0N1(xix)2]=1N1[(i=0N1xi2)Nx2]
var(x,ddof=1)
var(x)
Zentralmoment dritten Grades (ohne Bessel-Korrektur, asymptotisch erwartungstreu) μ̂3=1N[i=0N1(xix)3]=1N(i=0N1xi3)3xN(i=0N1xi2)+2x3
sum(x**3)/float(len(x))-3*mean(x)*sum(x**2)/float(len(x))+2*mean(x)**3
sum(x.^3)/length(x)-3*mean(x)*sum(x.^2)/length(x)+2*mean(x)^3
Zentralmoment dritten Grades (mit Bessel-Korrektur, nur für unabhängige xi erwartungstreu) μ̂3=N(N1)(N2)[i=0N1(xix)3]=N(N1)(N2)[(i=0N1xi3)3x(i=0N1xi2)+2Nx3]
len(x)/float((len(x)-1)*(len(x)-2))*(sum(x**3)-3*mean(x)*sum(x**2)+2*len(x)*mean(x)**3)
length(x)/((length(x)-1)*(length(x)-2))*(sum(x.^3)-3*mean(x)*sum(x.^2)+2*length(x)*mean(x)^3)
Zentralmoment vierten Grades (ohne Bessel-Korrektur, asymptotisch erwartungstreu) μ̂4=1N[i=0N1(xix)4]=1N(i=0N1xi4)4xN(i=0N1xi3)+6x2N(i=0N1xi2)3x4
sum(x**4)/float(len(x))-4*mean(x)*sum(x**3)/float(len(x))+6*mean(x)**2*sum(x**2)/float(len(x))-3*mean(x)**4
sum(x.^4)/length(x)-4*mean(x)*sum(x.^3)/length(x)+6*mean(x)^2*sum(x.^2)/length(x)-3*mean(x)^4
Zentralmoment vierten Grades (mit Bessel-Korrektur, nur für unabhängige xi erwartungstreu) μ̂4=N2(N1)(N2)(N3)[i=0N1(xix)4]
2N3(N1)(N2)(N3)[(i=0N1xi4)4x(i=0N1xi3)+3N(i=0N1xi2)2]
=N22N+3(N1)(N2)(N3)[(i=0N1xi4)4x(i=0N1xi3)]
3(2N3)N(N1)(N2)(N3)(i=0N1xi2)2+3N2(N1)(N2)(N3)[2x2(i=0N1xi2)Nx4]
(len(x)**2-2*len(x)+3)/float((len(x)-1)*(len(x)-2)*(len(x)-3))*(sum(x**4)-4*mean(x)*sum(x**3))-3*(2*len(x)-3)/float(len(x)*(len(x)-1)*(len(x)-2)*(len(x)-3))*sum(x**2)**2+3*len(x)**2/float((len(x)-1)*(len(x)-2)*(len(x)-3))*(2*mean(x)**2*sum(x**2)-len(x)*mean(x)**4)
(length(x)^2-2*length(x)+3)/((length(x)-1)*(length(x)-2)*(length(x)-3))*(sum(x.^4)-4*mean(x)*sum(x.^3))-3*(2*length(x)-3)/(length(x)*(length(x)-1)*(length(x)-2)*(length(x)-3))*sum(x.^2)^2+3*length(x)^2/((length(x)-1)*(length(x)-2)*(length(x)-3))*(2*mean(x)^2*sum(x.^2)-length(x)*mean(x)^4)
lineare Trendbereinigung
import scipy.signal as scisig
x=scisig.detrend(x)
x=detrend(x);
Trendbereinigung mit Polynom p-ten Grades (Ergebnis der Regression x̃)
p=5
a=arange(0,N)
c=polyfit(a,x,p)
xtilde=zeros(N)
for j in range(0,p+1):
  xtilde=(a*xtilde+c[j])

x-=xtilde
p=5;
a=(1:N);
c=polyfit(a,x,p);
xtilde=zeros(1,N);
for j=1:p+1
xtilde=(a.*xtilde+c(j));
end
x=x-xtilde;
Varianz nach Trendbereinigung mit Polynom p-ten Grades (Ergebnis der Regression x̃, mit Bessel-Korrektur, nur für unabhängige xi erwartungstreu) s2=1Np1[i=0N1(xix̃)2]
var(x,ddof=p+1)
N*var(x,1)/(N-p-1)
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)