mirror of
https://github.com/Vale54321/BigData.git
synced 2025-12-11 09:59:33 +01:00
Aufgabe 2
This commit is contained in:
8
Aufgabe 2/.spyproject/config/backups/codestyle.ini.bak
Normal file
8
Aufgabe 2/.spyproject/config/backups/codestyle.ini.bak
Normal file
@@ -0,0 +1,8 @@
|
||||
[codestyle]
|
||||
indentation = True
|
||||
edge_line = True
|
||||
edge_line_columns = 79
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
|
||||
6
Aufgabe 2/.spyproject/config/backups/encoding.ini.bak
Normal file
6
Aufgabe 2/.spyproject/config/backups/encoding.ini.bak
Normal file
@@ -0,0 +1,6 @@
|
||||
[encoding]
|
||||
text_encoding = utf-8
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
|
||||
7
Aufgabe 2/.spyproject/config/backups/vcs.ini.bak
Normal file
7
Aufgabe 2/.spyproject/config/backups/vcs.ini.bak
Normal file
@@ -0,0 +1,7 @@
|
||||
[vcs]
|
||||
use_version_control = False
|
||||
version_control_system =
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
|
||||
12
Aufgabe 2/.spyproject/config/backups/workspace.ini.bak
Normal file
12
Aufgabe 2/.spyproject/config/backups/workspace.ini.bak
Normal file
@@ -0,0 +1,12 @@
|
||||
[workspace]
|
||||
restore_data_on_startup = True
|
||||
save_data_on_exit = True
|
||||
save_history = True
|
||||
save_non_project_files = False
|
||||
project_type = 'empty-project-type'
|
||||
recent_files = []
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
recent_files = []
|
||||
|
||||
8
Aufgabe 2/.spyproject/config/codestyle.ini
Normal file
8
Aufgabe 2/.spyproject/config/codestyle.ini
Normal file
@@ -0,0 +1,8 @@
|
||||
[codestyle]
|
||||
indentation = True
|
||||
edge_line = True
|
||||
edge_line_columns = 79
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
[codestyle]
|
||||
indentation = True
|
||||
edge_line = True
|
||||
edge_line_columns = 79
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[encoding]
|
||||
text_encoding = utf-8
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
[vcs]
|
||||
use_version_control = False
|
||||
version_control_system =
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
[workspace]
|
||||
restore_data_on_startup = True
|
||||
save_data_on_exit = True
|
||||
save_history = True
|
||||
save_non_project_files = False
|
||||
|
||||
6
Aufgabe 2/.spyproject/config/encoding.ini
Normal file
6
Aufgabe 2/.spyproject/config/encoding.ini
Normal file
@@ -0,0 +1,6 @@
|
||||
[encoding]
|
||||
text_encoding = utf-8
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
|
||||
7
Aufgabe 2/.spyproject/config/vcs.ini
Normal file
7
Aufgabe 2/.spyproject/config/vcs.ini
Normal file
@@ -0,0 +1,7 @@
|
||||
[vcs]
|
||||
use_version_control = False
|
||||
version_control_system =
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
|
||||
12
Aufgabe 2/.spyproject/config/workspace.ini
Normal file
12
Aufgabe 2/.spyproject/config/workspace.ini
Normal file
@@ -0,0 +1,12 @@
|
||||
[workspace]
|
||||
restore_data_on_startup = True
|
||||
save_data_on_exit = True
|
||||
save_history = True
|
||||
save_non_project_files = False
|
||||
project_type = 'empty-project-type'
|
||||
recent_files = []
|
||||
|
||||
[main]
|
||||
version = 0.2.0
|
||||
recent_files = []
|
||||
|
||||
8495
Aufgabe 2/adsbprak.txt
Normal file
8495
Aufgabe 2/adsbprak.txt
Normal file
File diff suppressed because it is too large
Load Diff
461274
Aufgabe 2/adsbprak2.txt
Normal file
461274
Aufgabe 2/adsbprak2.txt
Normal file
File diff suppressed because it is too large
Load Diff
238
Aufgabe 2/test.py
Normal file
238
Aufgabe 2/test.py
Normal file
@@ -0,0 +1,238 @@
|
||||
import math
|
||||
import time
|
||||
from typing import Iterable, List, Tuple, Dict
|
||||
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def stats_min_max_avg_count_sum(numbers: Iterable[float]) -> Tuple[float, float, float, int, float]:
|
||||
nums = list(numbers)
|
||||
count = len(nums)
|
||||
if count == 0:
|
||||
raise ValueError("Leere Eingabeliste nicht erlaubt")
|
||||
s = sum(nums)
|
||||
return (min(nums), max(nums), s / count, count, s)
|
||||
|
||||
|
||||
def catalan_list(n: int) -> List[int]:
|
||||
if n < 0:
|
||||
raise ValueError("n muss >= 0 sein")
|
||||
c = [0] * (n + 1)
|
||||
c[0] = 1
|
||||
for i in range(1, n + 1):
|
||||
acc = 0
|
||||
for k in range(i):
|
||||
acc += c[k] * c[i - 1 - k]
|
||||
c[i] = acc
|
||||
return c
|
||||
|
||||
|
||||
def read_adsb_lonlat_by_aircraft(path: str) -> Dict[str, Tuple[List[float], List[float]]]:
|
||||
flights: Dict[str, Tuple[List[float], List[float]]] = {}
|
||||
with open(path, "r", encoding="utf-8") as f:
|
||||
for line in f:
|
||||
parts = line.strip().split()
|
||||
if len(parts) < 6:
|
||||
continue
|
||||
ac_id = parts[0]
|
||||
# parts[4] = lat, parts[5] = lon (laut Aufgabenbeschreibung)
|
||||
try:
|
||||
lat = float(parts[4])
|
||||
lon = float(parts[5])
|
||||
except ValueError:
|
||||
continue
|
||||
if ac_id not in flights:
|
||||
flights[ac_id] = ([], [])
|
||||
flights[ac_id][0].append(lon)
|
||||
flights[ac_id][1].append(lat)
|
||||
return flights
|
||||
|
||||
|
||||
# ------------------------------
|
||||
# Aufgaben
|
||||
# ------------------------------
|
||||
|
||||
def aufgabe2_a() -> None:
|
||||
print("a) Arithmetik")
|
||||
vals = [
|
||||
7 + 5,
|
||||
7 - 5,
|
||||
7 * 5,
|
||||
7 / 5,
|
||||
7 % 5,
|
||||
7 ** 5,
|
||||
]
|
||||
print(vals)
|
||||
|
||||
|
||||
def aufgabe2_b() -> None:
|
||||
print("b) Listen")
|
||||
lst = [10, 20, 30, 40, 50]
|
||||
print("Start:", lst)
|
||||
print("Index 0:", lst[0], "Index -1:", lst[-1])
|
||||
print("Slice [1:4]:", lst[1:4])
|
||||
print("Slice [:3]:", lst[:3])
|
||||
print("Slice [2:]:", lst[2:])
|
||||
lst.insert(2, 999)
|
||||
print("Nach insert(2,999):", lst)
|
||||
del lst[3]
|
||||
print("Nach del lst[3]:", lst)
|
||||
lst.append(777)
|
||||
print("Nach append(777):", lst)
|
||||
|
||||
|
||||
def aufgabe2_c() -> None:
|
||||
print("c) range-Objekt")
|
||||
total = 0
|
||||
for x in range(1000):
|
||||
total += x
|
||||
print("Summe 0..999:", total)
|
||||
|
||||
|
||||
def aufgabe2_d() -> None:
|
||||
print("d) Dictionary")
|
||||
d = {"name": "Valentin", "semester": 1}
|
||||
print("Start:", d)
|
||||
print("name ->", d["name"])
|
||||
d["semester"] = d["semester"] + 1
|
||||
d["projekt"] = "Big Data"
|
||||
print("Geändert:", d)
|
||||
|
||||
|
||||
def aufgabe2_e() -> None:
|
||||
print("e) Funktion min max avg count sum")
|
||||
res = stats_min_max_avg_count_sum(range(1000))
|
||||
print("(min, max, avg, count, sum) =", res)
|
||||
|
||||
|
||||
def aufgabe2_f() -> None:
|
||||
print("f) List comprehension")
|
||||
nums = [x for x in range(1, 10001) if (x % 3 == 0 and x % 5 == 0 and x % 7 == 0)]
|
||||
print("Anzahl:", len(nums))
|
||||
print("Beispiele:", nums[:10])
|
||||
|
||||
res = stats_min_max_avg_count_sum(nums)
|
||||
print("Stats:", res)
|
||||
|
||||
|
||||
def aufgabe2_g() -> None:
|
||||
print("g) Sinus Cosinus Funktion")
|
||||
deg = np.linspace(0.0, 720.0, 5000)
|
||||
rad = np.deg2rad(deg)
|
||||
y_sin = np.sin(rad) + np.sin(2 * rad) / 2 + np.sin(4 * rad) / 4 + np.sin(8 * rad) / 8
|
||||
y_cos = np.cos(rad) + np.cos(2 * rad) / 2 + np.cos(4 * rad) / 4 + np.cos(8 * rad) / 8
|
||||
|
||||
plt.figure()
|
||||
plt.plot(deg, y_sin, label="sin-Kombination")
|
||||
plt.plot(deg, y_cos, label="cos-Kombination")
|
||||
plt.xlabel("Winkel (Grad)")
|
||||
plt.ylabel("Funktionswert")
|
||||
plt.title("Sinus Cosinus Funktion")
|
||||
plt.legend()
|
||||
plt.grid(True)
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
|
||||
def aufgabe2_h() -> None:
|
||||
print("h) Catalansche Zahlen")
|
||||
n = 20
|
||||
c = catalan_list(n)
|
||||
print(f"C0..C{n}:", c)
|
||||
|
||||
|
||||
def aufgabe2_i() -> None:
|
||||
print("i) Laufzeitmessung Catalan(n) für n = 50..1500 (Schritt 50)")
|
||||
ns = list(range(50, 1501, 50))
|
||||
times_sec = []
|
||||
for n in ns:
|
||||
t0 = time.perf_counter()
|
||||
_ = catalan_list(n)
|
||||
t1 = time.perf_counter()
|
||||
times_sec.append(t1 - t0)
|
||||
|
||||
# Scatterplot
|
||||
plt.figure()
|
||||
plt.scatter(ns, times_sec)
|
||||
plt.xlabel("n")
|
||||
plt.ylabel("Zeit [s]")
|
||||
plt.title("Catalan(n) Laufzeit (Scatter)")
|
||||
plt.grid(True)
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
# Lineplot
|
||||
plt.figure()
|
||||
plt.plot(ns, times_sec)
|
||||
plt.xlabel("n")
|
||||
plt.ylabel("Zeit [s]")
|
||||
plt.title("Catalan(n) Laufzeit (Linie)")
|
||||
plt.grid(True)
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
|
||||
def aufgabe2_j(path_adsb: str = "adsbprak.txt",
|
||||
path_adsb2: str = "adsbprak2.txt") -> None:
|
||||
print("j) ADSB-Daten: Pfade:", path_adsb, "und", path_adsb2)
|
||||
|
||||
def plot_file(p: str) -> None:
|
||||
flights = read_adsb_lonlat_by_aircraft(p)
|
||||
if not flights:
|
||||
print(f"Keine gültigen Daten in: {p}")
|
||||
return
|
||||
# Kombinierter Plot: Linie + Punkte
|
||||
plt.figure()
|
||||
for ac_id, (lons, lats) in flights.items():
|
||||
plt.plot(lons, lats, linewidth=1.0)
|
||||
plt.scatter(lons, lats, s=6)
|
||||
plt.xlabel("Länge (deg)")
|
||||
plt.ylabel("Breite (deg)")
|
||||
plt.title(f"ADSB-Flugbahnen (Linie + Punkte): {p}")
|
||||
plt.grid(True)
|
||||
plt.axis("equal")
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
# Datei 1
|
||||
try:
|
||||
plot_file(path_adsb)
|
||||
except FileNotFoundError:
|
||||
print(f"Datei nicht gefunden: {path_adsb} bitte Pfad prüfen.")
|
||||
|
||||
# Datei 2
|
||||
try:
|
||||
plot_file(path_adsb2)
|
||||
except FileNotFoundError:
|
||||
print(f"Datei nicht gefunden: {path_adsb2} bitte Pfad prüfen.")
|
||||
|
||||
|
||||
# ------------------------------
|
||||
# Bequemer Gesamtaufruf
|
||||
# ------------------------------
|
||||
|
||||
def run_all() -> None:
|
||||
aufgabe2_a()
|
||||
print()
|
||||
aufgabe2_b()
|
||||
print()
|
||||
aufgabe2_c()
|
||||
print()
|
||||
aufgabe2_d()
|
||||
print()
|
||||
aufgabe2_e()
|
||||
print()
|
||||
aufgabe2_f()
|
||||
print()
|
||||
aufgabe2_g()
|
||||
print()
|
||||
aufgabe2_h()
|
||||
print()
|
||||
aufgabe2_i()
|
||||
# Pfade ggf. anpassen, falls du lokal testest
|
||||
aufgabe2_j()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# In Spyder kannst du alternativ einzelne Funktionen mit F9 ausführen.
|
||||
run_all()
|
||||
Reference in New Issue
Block a user