Nabend,
ich habe ein Problem mit dem For Loop. Ist es möglich den zum indizieren eines Nullektors zu nutzen und dann über if-Bedingungen die Nullen zu ersetzen?
Bei mir klappt das nur für i=1, dannach bleibt der Vektor =0.
Danke für die Hilfe!
Mit For-Loops indizieren und Nullvektor ändern
kann ich machen, obs dir weiterhilft weiß ich nicht:D
hier der Ausschnitt. Weitere Werte (wie Ta) sind aus einer Zeitreihe:
Ti = np.ones_like(laengeT) * Ti_soll
Ti_n = np.zeros(len(laengeT))
Qp_bedarf_ges = np.zeros(len(laengeT))
Ti_verlust = np.zeros(len(laengeT))
for i in range(1, len(Delta_T), 1):
Qp_trans = Qp_haus * (Ti - Ta)
Qp_vent = (Ti - Ta) * (Vr * n_viertelst * (1 - eta_wärmerückgewinnung) * (cp_luft * rho_luft))
Qp_bedarf_ges = Qp_bedarf_ges + (Qp_trans + Qp_vent[i] - Qp_sol - Qp_innen) * 0.25
if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] >= P_Heiz:
Qp_bedarf_ges[i] = Qp_bedarf_ges[i] - P_Heiz * 0.25
P_Heiz_v[i] = P_Heiz * 0.25
Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))
print(Ti_n[i])
if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] < P_Heiz:
Qp_bedarf_ges[i] = 0
P_Heiz_v[i] = Qp_bedarf_ges[i]
Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))
else:
Qp_bedarf_ges[i] = 0
Ti_n[i] = Ti[i]
print(Qp_bedarf_ges)
#--- Das Problem ist jetzt, dass Qp_bedarf bis auf den ersten Wert weiterhin aus Nullen besteht.
hier der Ausschnitt. Weitere Werte (wie Ta) sind aus einer Zeitreihe:
Ti = np.ones_like(laengeT) * Ti_soll
Ti_n = np.zeros(len(laengeT))
Qp_bedarf_ges = np.zeros(len(laengeT))
Ti_verlust = np.zeros(len(laengeT))
for i in range(1, len(Delta_T), 1):
Qp_trans = Qp_haus * (Ti - Ta)
Qp_vent = (Ti - Ta) * (Vr * n_viertelst * (1 - eta_wärmerückgewinnung) * (cp_luft * rho_luft))
Qp_bedarf_ges = Qp_bedarf_ges + (Qp_trans + Qp_vent[i] - Qp_sol - Qp_innen) * 0.25
if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] >= P_Heiz:
Qp_bedarf_ges[i] = Qp_bedarf_ges[i] - P_Heiz * 0.25
P_Heiz_v[i] = P_Heiz * 0.25
Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))
print(Ti_n[i])
if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] < P_Heiz:
Qp_bedarf_ges[i] = 0
P_Heiz_v[i] = Qp_bedarf_ges[i]
Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))
else:
Qp_bedarf_ges[i] = 0
Ti_n[i] = Ti[i]
print(Qp_bedarf_ges)
#--- Das Problem ist jetzt, dass Qp_bedarf bis auf den ersten Wert weiterhin aus Nullen besteht.
Ein Variable `Qp_bedarf` gibt es gar nicht. Wenn Du `Qp_bedarf_ges` meinst, dann scheint wohl dieser Wert nie größer als P_Heiz zu sein, was irgendwie auch klar ist, denn egal ob Qp_bedarf_ges-Wert größer als P_Heiz ist, oder kleiner, Qp_bedarf_ges wird immer auf 0 gesetzt.
Das innerhalb der for-Schleife
kann man das Qp_bedarf_ges = 0 auch außerhalb des if schreiben. Das selbe gilt auch für Ti_n, denn 0 geteilt durch irgendwas bleibt 0.
Die for-Schleife vereinfacht sich also zu
Was Du wirklich ausrechnen willst, kann man bei dem Code wirklich nicht sagen.
Warum benutzt Du ones_like aber nicht zeros_like?
Das innerhalb der for-Schleife
Code: Alles auswählen
if Qp_bedarf_ges[i] > 0 and Qp_bedarf_ges[i] < P_Heiz:
Qp_bedarf_ges[i] = 0
P_Heiz_v[i] = Qp_bedarf_ges[i]
Ti_n[i] = Ti[i] - (Qp_bedarf_ges[i] / (Vr * rho_luft * cp_luft))
else:
Qp_bedarf_ges[i] = 0
Ti_n[i] = Ti[i]
Die for-Schleife vereinfacht sich also zu
Code: Alles auswählen
for i in range(1, len(Delta_T), 1):
Ti_n[i] = Ti[i]
Qp_bedarf_ges[i] = 0
Warum benutzt Du ones_like aber nicht zeros_like?