if fctable(i,j)== 0
fctable(i,j)=pairwiseCouplingFFCA(solver,network, i, j, Irev, Prev, Frev);
if(fctable(i, j)==8)
fctable(i,j)=pairwiseCouplingBwoS(solver,network, i, j);
end
Nun will ich die werte, die durch pairwiseCouplingFFCA & -BwoS erzeugt werden in fünf kleinere Teile unterteilen, also die Matrizen Fi, Pi, Di, di, Ui
Und nun kann ich vorhersagen treffen, bevor mit den functionen von oben weitergearbeitet werden muss. diesesind nämlich sehr langsam und müssen jedesmal viele lineare programme lösen, daher ist die idee, diese vielen verschiedene cases die eintreffen können einmal durchzuprüfen und schonmal in die matrix (fctable) einzutragen, damit an den stellen, kein lineares programm gelöst werden muss: Das hab ich so gelöst:
Das programm funktioniert auch so und gibt die gleichen ergebnisse wie vorher, nur ... naja, nicht schneller sondern langsamer...
Das liegt zum teil auch daran, dass ich jetzt ein paar fälle weggelassen habe, die nicht eindeutig sind, sondern für die dann nochmal extra eine der pairwiseCoupling-funktionen aufgerufen werden muss.
Meine Frage ist nun eigentlich: Gibt es nicht eine schönere und vorallem einfachere variante, das ist jetzt so anfängermäßig alle fälle einmal durchprobiert, aber geht nicht auch irgendwie etwas in die richtung:
irgendwie so, das man nicht alle cases durchgehen muss und tausend und eine if abfrage hat??? ich hoffe das ist hier nicht zu unübersichtlich und unverständlich, da es nur so ein ausschnitt von der funktion ist... naja, ich wäre jedenfalls für jeden tipp, sehr sehr dankbar!
Ich habe das Problem nicht ganz verstanden. Aber rein technisch läßt sich der IF-Baum so verkürzen:
Code:
s2 = s(2);
for l = 1:s2
for k = 1:s2
if Fi(i,l) if Ui(i,k)
fctable(l,k)=5;
elseif Fi(i,k)
fctable(l,k)=1;
elseifPi(i,k)
fctable(l,k)=2;
elseif Di(i,k)
fctable(l,k)=3;
elseif di(i,k)
fctable(l,k)=4;
end end ifPi(i,l) if Di(i,k)
fctable(l,k)=3;
elseif di(i,k)
fctable(l,k)=4;
elseif Ui(i,k)
fctable(l,k)=5;
end end if Di(i,l) && di(i,k)
fctable(l,k)=4;
end end end
Leider muss das nicht unbedingt das gleiche Ergebnis liefern, wenn z.B. Fi(i,l) und Pi(i,l) beide TRUE sind. Auf jeden Fall kann man sich die Vergleiche mit TRUE sparen. Kann man den Fall di(i,k) => fctable(l,k)=4 zu beginn ausschließen?
na das sieht ja schonmal tausendmal besser aus, vielen dank. Was meinst du mit dem Fall d(i,k) ==> fctable(l,k)=4?
Also diese vorhersagen basieren auf einer tabelle, und diese is symmetrisch, deswegen muss ich nur die abfrage für die fälle:
Fi mit allen,
Pi mit Pi-Ui,
Di mit di und Ui (weil wenn beide Di sind, kann man nix aussagen)
Und ja, für die Fälle di&&di , di&&Ui kann man auch keine vorhersagen treffen, wenn du das meinst
also gut ich bring diese verkürzung mal ein, muss mir das nochmal anschauen und gucken ob es die gleichen ergebnisse erzielt! Vielen dank erstmal!
Ich soll zunächst von einer matrix den nullSpace erzeugen, mit matlab ja sehr einfach:
K = null(Matrix, 'r') <-- rational reicht bei mir
Jetzt soll ich aber zeilenvektoren i,j finden, die folgendes erfüllen:
K( i, : ) = x* K( j, : )
sprich vektoren, die linear abhängig sind. Da gibt es doch bestimmt in matlab auch wieder eine tolle funktion? Oder muss ich durch die beiden zeilen durchgehen und die einträge jeweils teil und wenn sie gleich sind und der teiler in der ganzen zeile gleich bleibt, mir i,j merken?
ich hab es auch schon mit gcd probiert, aber da kann man ja nur zwei zahlen vergleichen oder?
bitte bitte eine kleine hilfestellung, ich bin einfach nicht dafür gemacht vielen lieben dank
lg toenchen
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.