2.5 Zeitreihenanalyse mit Octave Lösungen

Strukturdynamik
2.5-1
Prof. Dr. Wandinger
2.5 Zeitreihenanalyse mit Octave
Lösungen
Aufgabe 1:
Octave-Skript zur Lösung der Aufgabe:
# Übungsblatt 2.5, Aufgabe 1: Wasserfall
#
# -----------------------------------------------------set(0, "defaultlinelinewidth", 2);
# Konstanten
nbin = 50; % Intervalle für die Häufigkeitsverteilung
# Daten einlesen
[x, fs] = wavread("u2_5_1.wav");
# Mittelwerte
xm = mean(x);
s2 = var(x);
s = sqrt(s2);
printf("Mittelwert
printf("Varianz
printf("Standardabweichung
= %8.5f\n", xm);
= %8.5f\n", s2);
= %8.5f\n", s);
# Kurtosis und Schiefe
b2 = kurtosis(x);
g1 = skewness(x);
printf("Kurtosis
printf("Schiefe
= %8.5f\n", b2);
= %8.5f\n", g1);
# Häufigkeitsverteilung
xmax = max(abs(x));
edges = linspace(-xmax, xmax, nbin + 1);
xc
= 0.5 * (edges(1 : nbin) + edges(2 : end));
2. Übertragungsfunktionen
10.04.15
Strukturdynamik
2.5-2
Prof. Dr. Wandinger
N = hist(x, xc);
# Wahrscheinlichkeitsdichtefunktion
dx
= mean(diff(edges));
pdfx = N / (length(x) * dx);
pdfg = normpdf(xc, xm, s);
# Ausgabe
figure(1, "position", [100, 500, 600, 600], ...
"paperposition", [0, 0, 12.5, 8.5]);
plot(xc, pdfx, "color", "green", "marker", "+", ...
xc, pdfg, "color", "red");
legend("Daten", "Gauss");
legend("boxoff"); legend("left");
grid;
xlabel("x");
ylabel("p(x)");
print("u2_5_1.jpg", "-djpg", "-FArial:12");
Wahrscheinlichkeitsdichte:
Ausgabe:
Mittelwert
2. Übertragungsfunktionen
= -0.00279
10.04.15
Strukturdynamik
Varianz
Standardabweichung
Kurtosis
Schiefe
2.5-3
=
=
=
=
Prof. Dr. Wandinger
0.00957
0.09781
3.10774
0.00994
Es handelt sich mit sehr guter Näherung um einen Gaußschen stochastischen Prozess.
Aufgabe 2:
Octave-Skript zur Lösung der Aufgabe:
# Übungsblatt 2.5, Aufgabe 2:
# Kovarianzen und Leistungsdichtespektren
#
# -----------------------------------------------------set(0, "defaultlinelinewidth", 1);
colors = {"green", "blue", "magenta", "cyan", "black"};
# Parameter für Berechnung der Leistungsdichtespektren
lenw
= 1024;
overlap = 0.7;
% Fensterlänge
% Überlappungsfaktor
# Daten einlesen
data = dlmread("u2_5_2.csv");
[nt, nr] = size(data);
nr
= nr - 1;
t
= data(:, 1);
x
= data(:, 2 : end);
dt
= mean(diff(t));
fs
= 1 / dt;
# Kovarianzen
maxlag = floor(0.1 * nt);
for k = 1 : nr
[R(:, k), lags] = xcov(x(:, k), maxlag, "unbiased");
end
tau = lags * dt;
Rm = mean(R, 2);
2. Übertragungsfunktionen
10.04.15
Strukturdynamik
2.5-4
Prof. Dr. Wandinger
# Leistungsdichtespektren
for k = 1 : nr
[G(:,k), f] = pwelch(x(:,k),lenw,overlap,[],fs);
end
Gm = mean(G, 2);
# Varianz
s2x = mean(var(x));
s2G = trapz(f, Gm);
printf("Varianz aus Zeitreihe = %8.5f\n", s2x);
printf("Varianz aus PSD
= %8.5f\n", s2G);
# Ausgabe
figure(1, "position", [10, 500, 1000, 500], ...
"paperposition", [0, 0, 17, 7.5]);
hold on
plot(tau, Rm, "color", "red", "linewidth", 2);
text{1} = "Gemittelt";
for k = 2 : 2 : nr
l = k / 2;
plot(tau, R(:, k), "color", colors{l});
text{l + 1} = sprintf("Realisierung %2d", k);
end
hold off
legend(text); legend("boxoff"); legend("left");
set(gca(), "xlim", [0, tau(end)]);
grid;
xlabel('\tau');
ylabel('R_{xx}');
print("u2_5_2a.jpg", "-djpg", "-FArial:14");
figure(2, "position", [10, 10, 1000, 500], ...
"paperposition", [0, 0, 17, 7.5]);
hold on
plot(f, Gm, "color", "red", "linewidth", 2);
text{1} = "Gemittelt";
for k = 2 : 2 : nr
l = k / 2;
plot(f, G(:, k), "color", colors{l});
text{l + 1} = sprintf("Realisierung %2d", k);
2. Übertragungsfunktionen
10.04.15
Strukturdynamik
2.5-5
Prof. Dr. Wandinger
end
hold off
legend(text); legend("boxoff"); legend("left");
set(gca(), "xlim", [0, 50]);
grid;
xlabel('f');
ylabel('G_{xx}');
print("u2_5_2b.jpg", "-djpg", "-FArial:14");
Kovarianzen:
Leistungsdichtespektren:
2. Übertragungsfunktionen
10.04.15
Strukturdynamik
2.5-6
Prof. Dr. Wandinger
Vergleich der Varianzen:
–
Berechnung aus Zeitreihe: s2 = 3,712
–
Berechnung aus Leistungsdichtespektrum: s2 = 3,796
Die Mittelung über die Realisierungen führt zu einer deutlichen Glättung der
Kovarianz und des Leistungsdichtespektrums.
Aufgabe 3:
Octave-Skript zur Lösung der Aufgabe:
# Übungsblatt 2.5, Aufgabe 3:
# Leistungs- und Kreuzleistungsdichtespektrum
#
# ----------------------------------------------------set(0, "defaultlinelinewidth", 2);
# Parameter für Berechnung der Leistungsdichtespektren
lenw
=
overlap =
512;
0.5;
% Fensterlänge
% Überlappungsfaktor
# Daten einlesen
data = dlmread("u2_5_3.csv");
t
x
y
nt
dt
fs
=
=
=
=
=
=
data(:, 1);
data(:, 2);
data(:, 3);
length(t);
mean(diff(t));
1 / dt;
# Auto- und Kreuzkorrelation
maxlag
[Rxx, lags]
Ryy
Rxy
tau
=
=
=
=
=
floor(0.1 * nt);
xcorr(x, maxlag, "unbiased");
xcorr(y, maxlag, "unbiased");
xcorr(x, y, maxlag, "unbiased");
lags * dt;
# Leistungs- und Kreuzleistungsdichtespektren
[Gxx, f] = pwelch(x, lenw, overlap, [], fs);
Gyy
= pwelch(y, lenw, overlap, [], fs);
2. Übertragungsfunktionen
10.04.15
Strukturdynamik
Gxy
2.5-7
Prof. Dr. Wandinger
= cpsd(x, y, lenw, overlap, [], fs);
# Ausgabe
figure(1, "position", [10, 100, 1000, 500], ...
"paperposition", [0, 0, 15, 7.5]);
plot(tau, Rxx, "color", "red",
tau, Ryy, "color", "green", ...
tau, Rxy, "color", "blue");
legend("R_{xx}", "R_{yy}", "R_{xy}");
legend("boxoff"); legend("left");
set(gca(), "xlim", [tau(1), tau(end)]);
grid;
xlabel('\tau [s]');
print("u2_5_3a.jpg", "-djpg", "-FArial:14");
figure(2, "position", [10, 500, 1000, 500], ...
"paperposition", [0, 0, 17, 9.5]);
subplot(1, 2, 1);
plot(f, Gxx, "color", "red", f, Gyy, "color", "green");
legend("G_{xx}", "G_{yy}");
legend("boxoff"); legend("left");
set(gca(), "xlim", [0, 50]);
grid;
xlabel("f [Hz]");
subplot(1, 2, 2);
plot(f, real(Gxy), "color", "red", ...
f, imag(Gxy), "color", "green");
legend("Re(G_{xy})", "Im(G_{xy})");
legend("boxoff"); legend("left");
set(gca(), "xlim", [0, 50]);
grid;
xlabel("f [Hz]");
print("u2_5_3b.jpg", "-djpg", "-FArial:14");
2. Übertragungsfunktionen
10.04.15
Strukturdynamik
2.5-8
Prof. Dr. Wandinger
Korrelationen:
Leistungs- und Kreuzleistungsdichtespektren:
2. Übertragungsfunktionen
10.04.15