ich habe das nachfolgende Skript geschrieben und leider tut es nicht das, was ich gerne haette. Ich habe aus einer Ergebnismatrix Bedingungen definiert, die erfuellt sein muessen, damit ein Zahlenwert zugewiesen wird. Beginnend bei eins, soll er, sobald die Bedingungen erfuellt sind, den Wert 2 zuweisen. Das Problem ist, dass ich am Ende einen Vektor mir nur einsen habe, da er mit State scheinbar einfach ueberschreibt. Kann mir jmd segen, wie ich es hinbekomme, dass ich am Ende einen Vektor mit Zahlen von 1-4 habe, die mir immer sagen in welchem state ich mich befinde?.
Code:
N = length(InOut(:,1));
State = 1; %start in Phase 1
vektorStates = zeros(1,N);
for i = 1:N
if InOut(:,2) == 0 & InOut(:,3) == 0 & InOut (:,5) > 0 & InOut (:,7) > 0;
State = 2;
end if InOut(:,2) > 0 & InOut (:,5) > 0 & InOut (:,7) == 0...
| InOut(:,2) > 0 & InOut (:,5) == 0 & InOut (:,7) > 0;
State = 3;
end if InOut (:,2) == 0 & InOut (:,3) == 0;
State = 4;
end if InOut(:,2) > 0 & InOut (:,3) > 0;
State = 1;
end
vektorStates(i) = State;
end
hast du mal mit einem breakpoint geschaut ob der Code in einer der If-Abfragen überhaupt aufgerufen wird? Eventuell läuft ja die Schleife ohne den Code in den If-Abfragen durch, weil die Bedingungen nie zutreffen?
Grüße
Jonas
_________________
1.) Ask Google & Matlab Documentation
2.) Ask gomatlab.de & Technical Support of MathWorks
3.) Go mad, your problem is unsolvable
ein Problem ist, dass sich die Abfrage nie auf i bezieht. Du musst entweder logische Indizierung verwenden oder die Abfragen wirklich immer auf ein Element beziehen, also
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Erst einmal ganz herzlichen Dank und entschuldigt die spaete Antwort, da ich das Projekt kurzzeitig pausieren musste. Jetzt habe ich das Problem, dass in dem gesamten Vektor der letzte State uebernommen wird, ich habe also nur Vieren in meinem Vektor. Ich moechte jedoch, dass er mir zu jedem i das jeweilige State in dem Vektor anzeigt.
_________________
zeigt dir der Vektor nur einen State an? Also nur eine Zahl im gesamten Vektor?
Dann würde ich davon ausgehen, dass du immer in die gleiche if-Bedingung rutscht.
Check mal mit breakpoints (die kannst du links an der Zeilenzahl an dem kleinen strich (draufklicken) setzten), ob du wirklich in alle if-Bedingungen reinkommst.
bitte vor allem auch den aktuellen Code und idealerweise noch einen Testdatensatz zur Verfügung stellen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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.