Code: Alles auswählen
y1 = np.arange(256)
y2=y1
z = np.zeros((256,256))
z[0:2] = [y1,y2]
Code: Alles auswählen
y1 = np.arange(256)
y2=y1
z = np.zeros((256,256))
z[0:2] = [y1,y2]
Code: Alles auswählen
abs_data = np.abs(self.daten[2])
for j, data in enumerate(self.daten[0]):
i = int(256*math.modf(data/self.rastertime)[0])
z[i] += np.histogram([vektor[j] for vektor in abs_data] ,bins=256,range=(u,o))[0]
Code: Alles auswählen
array([[ 2., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
...,
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.],
[ 0., 0., 0., ..., 0., 0., 0.]]
Code: Alles auswählen
In [780]: np.histogram([1+0j, 0+1j])
Out[780]:
(array([1, 0, 0, 0, 0, 0, 0, 0, 0, 1]),
array([ 0. +1.j , 0.1+0.9j, 0.2+0.8j, 0.3+0.7j, 0.4+0.6j, 0.5+0.5j,
0.6+0.4j, 0.7+0.3j, 0.8+0.2j, 0.9+0.1j]))
In [781]: np.histogram([1, 1])
Out[781]:
(array([0, 0, 0, 0, 0, 2, 0, 0, 0, 0]),
array([ 0.5, 0.6, 0.7, 0.8, 0.9, 1. , 1.1, 1.2, 1.3, 1.4]))
Ja so sieht mein z mit den minimalen test daten auch aus.BlackJack hat geschrieben:@feldmann_markus: Dein letztes Beispiel mit den Daten musste man nämlich noch ein wenig ändern, dass man es wirklich laufen lassen konnte und das Ergebnis von `z` sah ziemlich eintönig aus:
Code: Alles auswählen
array([[ 2., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], ..., [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.], [ 0., 0., 0., ..., 0., 0., 0.]]
Na ja eine komplexe Amplitude besitzt zwei Information, einmal ihren Betrag und ihreBlackJack hat geschrieben:Was sind das überhaupt für Daten? Du sprichst von Amplituden, aber wie soll ich mir denn eine komplexe Zahl als Amplitude vorstellen?
Eher ungünstig, da mein Programm von meinem Nachfolger mal in Realtime übersetztBlackJack hat geschrieben:Brauchst Du irgendwo in diesem ganzen Algorithmus die Daten als komplexe Zahlen, oder könnte man diese Umwandlung nicht *einmal* am Anfang erledigen?
komplex, da ich dann für 80e3 Peaks nur 20 bis 30 sek. benötige. Bei den BeträgenBlackJack hat geschrieben:Was davon willst Du?
Ja die abs Funktion wird auf,BlackJack hat geschrieben:@feldmann_markus: Das kann nicht sein, so komplex (hui ein Wortspiel) ist es nicht von allen Daten den Betrag zu bilden und danach hast Du auch nur noch die Hälfte der Daten. Da muss irgend etwas anderes schief laufen. Zum Beispiel hattest Du, wenn ich mich richtig erinnere, bei mindestens einem Codeschnippsel die `abs()`-Funktion auf alle Daten in der innersten Schleife.
Ja ich schaue mir morgen mal das abs() Problem an und ob die komplexen ErgebnisseBlackJack hat geschrieben:Und wie schon gesagt: Es kommt bei der Histogrammbildung etwas anderes heraus, weil Du bei komplexen Zahlen eben nicht nur die Amplitude, sondern auch die Phase berücksichtigst.
Ja numpy ist wirklich ein mächtiges Werkzeug, und da habe ich mir schon ne Menge inBlackJack hat geschrieben:Du solltest irgendwie von Python-Schleifen weg kommen und die Stärken von `numpy` besser nutzen. Da war es vielleicht sogar eine schlechte Idee vorher schon nach Peaks zu filtern, weil die Daten damit nicht mehr so schön regelmässig sind.
Code: Alles auswählen
f_dat = open('../../../peakswerteundzeit.dat','rb')
self.daten = cPickle.load(f_dat)
criterium = np.array(self.daten[1]==np.int_(1))
self.peakvaluemax = np.amax(np.abs(self.daten[2][criterium]))
TypeError: only integer arrays with one element can be converted to an index