VBA- Code in Python umschreiben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
fabo.python
User
Beiträge: 1
Registriert: Sonntag 21. August 2016, 18:18

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
Zuletzt geändert von Anonymous am Sonntag 21. August 2016, 20:00, insgesamt 1-mal geändert.
Grund: Quelltext in Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 18335
Registriert: Sonntag 21. Oktober 2012, 17:20

@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.
Benutzeravatar
noisefloor
User
Beiträge: 4253
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

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
Antworten