Signal- und Messdatenverarbeitung


Momente incl. Korrelationskoeffizient komplexer 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+1𝐢 und der Standardabweichung σ=1)
N=100
mu=3
sigma=1
x=normal(real(mu),sigma/sqrt(2),N)+1j*normal(imag(mu),sigma/sqrt(2),N)
plot(real(x),'o',imag(x),'o')
show()
N=100;
mu=3+1j;
sigma=1;
x=normrnd(real(mu),sigma/sqrt(2),[1,N])+1j*normrnd(imag(mu),sigma/sqrt(2),[1,N]);
plot((1:N),real(x),'o',(1:N),imag(x),'o')
Mittelwert x=1Ni=0N1xi
mean(x)
mean(x)
Varianz (ohne Bessel-Korrektur, asymptotisch erwartungstreu) s2=1Ni=0N1(xix)*(xix)=1Ni=0N1|xix|2
=(1Ni=0N1xi*xi)x*x=(1Ni=0N1|xi|2)|x|2
var(x)
var(x,1)
Varianz (mit Bessel-Korrektur, nur für unabhängige xi erwartungstreu) s2=1N1i=0N1(xix)*(xix)=1N1i=0N1|xix|2
var(x,ddof=1)
var(x)
lineare Trendbereinigung
import scipy.signal as scisig
x=scisig.detrend(x)
x=detrend(real(x))+1j*detrend(imag(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=1Np1i=0N1(xix̃)*(xix̃)=1Np1i=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)