Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
| kurse:efcomputergrafik:kw44 [2019/10/29 08:46] – Marcel Metzler | kurse:efcomputergrafik:kw44 [2019/10/29 14:17] (current) – Marcel Metzler | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====KW44: | ||
| + | Eine CSV (comma-separated-values) Datei braucht noch eine Kopfzeile, die als Identifikator der Spalteninhalte dient. Diese Kopfzeile müssen wir noch ergänzen. Da unsere Daten die x- und y-Koordinaten von Punkten in der Ebene sind, müssen wir nur den String ' | ||
| + | <code python Daten_erfassen.py> | ||
| + | from gpanel import * | ||
| + | import math | ||
| + | import cmath | ||
| + | import time | ||
| + | |||
| + | def onMousePressed(x, | ||
| + | move(x,y) | ||
| + | |||
| + | def onMouseDragged(x, | ||
| + | draw(x,y) | ||
| + | Koordinaten.append([x, | ||
| + | f.write(str(x) + "," | ||
| + | |||
| + | makeGPanel(0, | ||
| + | | ||
| + | | ||
| + | |||
| + | nameD=time.strftime(" | ||
| + | nameF=time.strftime(" | ||
| + | Koordinaten=[] | ||
| + | f=open(nameD," | ||
| + | fopen=1; | ||
| + | |||
| + | f.write(" | ||
| + | |||
| + | while fopen==1: | ||
| + | key = getKeyCodeWait() | ||
| + | if key==27: | ||
| + | | ||
| + | | ||
| + | print(" | ||
| + | </ | ||
| + | |||
| + | ===CSV Datei lesen=== | ||
| + | Wenn wir die Daten als CSV Datei abgespeichert haben, dann können wir sie aus einem anderen Programm lesen und weiterverarbeiten. Als erstes wollen wir die Daten wieder lesen und anzeigen. | ||
| + | |||
| + | <code python csv_datei_lesen.py> | ||
| + | from gpanel import * | ||
| + | import math | ||
| + | import cmath | ||
| + | import csv | ||
| + | |||
| + | # | ||
| + | # Einlesen der Daten | ||
| + | # | ||
| + | Koordinaten=[] | ||
| + | print(' | ||
| + | with open(' | ||
| + | reader=csv.DictReader(csvfile) | ||
| + | for row in reader: | ||
| + | Koordinaten.append([float(row[' | ||
| + | print(' | ||
| + | </ | ||
| + | |||
| + | Hier die entsprechende Datei {{ : | ||
| + | |||
| + | **Aufgabe 1** | ||
| + | * Analysiere das obige Programm | ||
| + | * Ergänze das obige Programm, so dass die eingelesenen Daten in einem GPanel angezeigt werden. | ||
| + | |||
| + | ===Berechnung der Fourier Koeffizienten=== | ||
| + | Wir approximieren $f(t)$ ($t\in[0, | ||
| + | $$f(t)=\sum_{k=-\infty}^{\infty}c_k \cdot e^{2 \pi ikt} \approx \sum_{k=-n}^{n}c_k \cdot e^{2\pi ikt}$$ | ||
| + | Mit den dazugehörigen komplexen Fourier Koeffizienten. | ||
| + | $$c_k=\int_0^1 f(t)\cdot e^{-2 \pi ikt}dt \approx \sum_{j=0}^{n-1}f(j\cdot \Delta t)\cdot e^{-2 \pi ikj\cdot \Delta t}\cdot \Delta t$$ | ||
| + | |||
| + | **Aufgabe 2** | ||
| + | * Ergänze das obige Programm mit der Berechnung der Fourier Koeffizienten $c_k$ mit $-n\leq k \leq n$ (Fourier-Analyse). | ||
| + | * Rekonstruiere $f(t)$ mit den Fourier Koeffizienten und zeichnen die Rekonstruktion in einer anderen Farbe ins gleiche Bild wie die Datenpunkte. (Fourier-Synthese). | ||