ist es möglich die squeeze funktion bei folgender übergabe auch geschickter zu benutzen oder irgendwie anders zu realisieren?
Ich habe den Profiler benutzt und das squeezen kostet die hälfte der Gesamtzeit:
Code:
x = 1; y = 2; z = 3;
for j = 1:Jmu
for i = 1:Imu % always s(east or west) with i, r(north or south) with j, t(back or front) with k for k = 1:Kmu
[Ipa(j,i,k,:),Ie(j,i,k,:,x),Ie(j,i,k,:,y),Ie(j,i,k,:,z)] = compute_node(squeeze(Sp_m(j,i,k,:)),beta_m(:),squeeze(Ii(j,i,k,:,x)),squeeze(Ii(j,i,k,:,y)),squeeze(Ii(j,i,k,:,z)),xsi(:),eta(:),my(:));
end end end
Ich brauche nämlich Vektoren als input von der Funktion compute_node. Dieser Doppelpunkt steht für eine Zahl von 10 Werten ca. In der Funktion compute_node
wird folgendes mit den Vektoren gemacht:[/code]
Code:
Ipi = ( beta_m.*V.*Sp_m+xsi.*Ax.*Ixi.*ga+eta.*Ay.*Iyi.*ga+my.*Az.*Izi.*ga)...
./ ( beta_m.*V+xsi.*Axe.*ga+eta.*Aye.*ga+my.*Aze.*ga);
Ixe = (Ipi-(1-ga)*Ixi )/ga; % intensities, which are still unknown
Iye = (Ipi-(1-ga)*Iyi )/ga;
Ize = (Ipi-(1-ga)*Izi )/ga;
mir fallen zwei Möglichkeiten ein. Ich nehme als Beispiel die Sp_m-Matrix, die anderen gehen analog).
Die bessere (zumindest, wenn Sp_m nicht gigantisch ist): indiziere um:
Hierbei allerdings nicht das Transponieren beim Zugriff auf Sp_m_ij vergessen (das ' am Ende), sonst hat man hierbei eine Zeile statt eine Spalte.
Ciao,
Titus
Phill
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 01.04.2010, 13:00
Titel:
Vielen Dank, die erste Methode scheint schon zu funktionieren, die benötigte Zeit ist kürzer. Allerdings habe ich noch ein falsches Ergebnis, irgendwas habe ich durch die Änderung nicht beachtet.
Könnte man statt methode eins nicht die Matrizen von vornherein anders initialisieren? Das würde allerdings viel arbeit für den gesamten code bedeuten...
Wenn ich den Fehler gefunden habe probiere ich die zweite Methode noch aus.
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.