Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====KW44:CSV File lesen und schreiben, Fourier Koeffizienten berechnen==== 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 'x,y' als Kopfzeile einfügen. <code python Daten_erfassen.py> from gpanel import * import math import cmath import time def onMousePressed(x, y): move(x,y) def onMouseDragged(x, y): draw(x,y) Koordinaten.append([x,y]) f.write(str(x) + "," + str(y) + "\n") makeGPanel(0,100,0,100, mousePressed = onMousePressed, mouseDragged = onMouseDragged) nameD=time.strftime("Daten_%Y_%m_%d_%H_%M_%S.txt") nameF=time.strftime("Fourier_%Y_%m_%d_%H_%M_%S.txt") Koordinaten=[] f=open(nameD,"w") fopen=1; f.write("x,y"+ "\n") while fopen==1: key = getKeyCodeWait() if key==27: f.close() fopen=0 print("Daten erfasst") </code> ===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('Daten lesen Start') with open('Daten_ksbg.txt') as csvfile: reader=csv.DictReader(csvfile) for row in reader: Koordinaten.append([float(row['x']),float(row['y'])]) print('Daten lesen Ende') </code> Hier die entsprechende Datei {{ :kurse:efcomputergrafik:daten_ksbg.txt |}}. **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,\;1]$) mit einer endlichen komplexen Fourier Reihe. $$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). kurse/efcomputergrafik/kw44.txt Last modified: 2019/10/29 15:17by Marcel Metzler