Seite 1 von 1

VBA- Code in Python umschreiben

Verfasst: Sonntag 21. August 2016, 18:26
von fabo.python
Hallo zusammen,

ich habe mir einen Code in VBA geschrieben, mit dem ich den gleitenden Durchschnitt von Messwerten berechne.
Allerdings möchte ich in Zukunft lieber Python als VBA verwenden. Da ich noch Neuling in der Python Programmierung bin, habe ich meine Schwierigkeiten den Code umzuschreiben.

Mein Code in VBA:
[codebox=vb file=Unbenannt.vb]For i = N - avg_span / 2 To avg_span / 2 Step -1
k = 0
sum = 0#
For j = i - avg_span / 2 To i + avg_span / 2
sum = sum + E11(j)
k = k + 1
Next j
E11_avg(i) = sum / k
Next i

For i = 1 To avg_span / 2 - 1
E11_avg(i) = E11_avg(avg_span / 2)
Next i
For i = N - avg_span / 2 + 1 To N
E11_avg(i) = E11_avg(N - avg_span / 2)
Next i[/code]


Mein bisheriger Code in Python:

Code: Alles auswählen

for i in range(int(N-avg_span/2),int(avg_span/2),-1):
    k = 0
    summ = 0
    for j in range(int(i-avg_span/2), int(i+avg_span/2)):
        summ = summ + E11[j]
        k += 1
        E11_avg[i] = summ/k
        
for i in range(1,int(avg_span/2-1)):
    E11_avg[i]= E11_avg(avg_span/2)
    
for i in range(N-avg_span/2+1,int(N)):
    E11_avg[i]= E11_avg(N-avg_span/2)

Für den Befehl "E11_avg = summ/k" wird mir immer 'numpy.float64' object does not support item assignment angezeigt.

Wäre super, wenn mir jemand weiterhelfen kann.

MfG fabo.python

Re: VBA- Code in Python umschreiben

Verfasst: Sonntag 21. August 2016, 18:49
von Sirius3
@fabo.python: was sind denn E11 und E11_avg? Du scheinst irgendwie numpy zu verwenden.
Das 1:1 Übersetzen von eine Programmiersprache zu einer anderen ist meist nicht ideal.

Re: VBA- Code in Python umschreiben

Verfasst: Montag 22. August 2016, 17:59
von noisefloor
Hallo,

@fabo.python: du müsstet schon den ganzen Code posten - sonst kann niemand nachvollziehen, was da passiert (passieren soll). Zumal: wenn wir den Code so wie gezeigt laufen lassen würden, würden wir direkt einen Fehler in der 1. Zeile bekommen, weil N nicht definiert. Ist es bei dir aber scheinbar :-)

Ansonsten ist die Fehlermeldung ja eindeutig und sollte sich erklären lassen, wenn du die Frage von Sirius3 beantwortest.

Gruß, noisefloor