a1_pi_i = zeros(L(1),L(1),L(2)-1);
for t = 1:L(2)-1 for i = 1:L(1) for j = 1:L(1)
a1_pi_i(i,j,t) = b(j,t) * a(i,j,t);
end end end
a_pi_i = zeros(L(1),L(2)-1);
for t = 1:L(2)-1 for i = 1:L(1)
a_pi_i(i,t) = sum(a1_pi_i(i,:,t));
end end
a_pi_i(find(isnan(a_pi_i))) = 0;
a1_pi_pi = zeros(L(1),L(1),L(2)-1);
for t = 1:L(2)-1 for i = 1:L(1) for j = 1:L(1)
a1_pi_pi(i,j,t) = b(i,t) * b(j,t) * a(i,j,t);
end end end
a2_pi_pi = zeros(L(1),L(2)-1);
for t = 1:L(2)-1 for i = 1:L(1)
a2_pi_pi(i,t) = sum(a1_pi_i(i,:,t));
end end
a2_pi_pi(find(isnan(a2_pi_pi))) = 0;
a_pi_pi = zeros(1,L(2)-1);
for t = 1:L(2)-1
a_pi_pi(1,t) = sum(a2_pi_pi(:,t));
end
tau_pi = zeros(L(1),L(1),L(2)-1);
for t = 1:L(2)-1 for i = 1:L(1) for j = 1:L(1)
tau_pi(i,j,t) = a(i,j,t) - a_pi_i(i,t) + a_pi_i(j,t) + a_pi_pi(1,t);
end end end
Anscheinend nicht ;)
Ich würde sagen, das liegt zum einen daran, dass die Formeln sehr unterschiedlich aussehen und man daher schlecht sieht, wieso da dasselbe herauskommen sollte.
Zum anderen könnte man natürlich beide Codeschnipsel mit dem Debugger Zeile für Zeile durchlaufen und schauen, was übereinstimmt und was nicht und welche Zeilen genau die Ursache für die unterschiedlichen Ergebnisse sind. Das wäre allerdings ein gewisser Aufwand, und das solltest wenn schon du machen - da du die Formeln kennst und die unterschiedlichen Bezeichnungen zueinander in Bezug setzen kannst, weißt du schließlich viel besser, was übereinstimmen sollte.
Ein paar generelle Tipps:
- pi ist die Kreiszahl (3.1415...) und sollte daher nicht anderweitig als Variable verwendet werden.
- sum arbeitet spaltenweise, es ist also keine for-Schleife über die Spalten nötig.
- es gibt komponentenweise Operationen wie .* ./ und .^ die Schleifen zumindest in Teilen überflüssig machen.
Grüße,
Harald
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.