WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Klassifizierung

 

Franziska1995
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.07.2018, 12:15     Titel: Klassifizierung
  Antworten mit Zitat      
Hallo Retter in der Not,

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

_________________

Dankeschön

Liebe Grüße
Franziska
Private Nachricht senden Benutzer-Profile anzeigen


J0nas
Forum-Century

Forum-Century


Beiträge: 208
Anmeldedatum: 10.09.15
Wohnort: ---
Version: ab 2016a
     Beitrag Verfasst am: 17.07.2018, 13:08     Titel:
  Antworten mit Zitat      
Hallo Franziska,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.497
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.07.2018, 13:12     Titel:
  Antworten mit Zitat      
Hallo,

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
Code:
if InOut(i,2) == 0 & InOut(i,3) == 0 ... % etc.


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.07.2018, 14:30     Titel: Re: Klassifizierung
  Antworten mit Zitat      
Hallo Franziska1995,

Der if Befehl benötigt immer eine skalare Bedingung. Deswegen wird intern aus if InOut(:,2) == 0 dies hier:
Code:
if all(InOut(:,2) == 0) && ~isempty(InOut)


Haralds Vorschlag ist deswegen eine Lösung.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Franziska1995
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 16.07.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2018, 14:51     Titel:
  Antworten mit Zitat      
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.
_________________

Dankeschön

Liebe Grüße
Franziska
Private Nachricht senden Benutzer-Profile anzeigen
 
Vaati
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 12.02.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.07.2018, 15:38     Titel:
  Antworten mit Zitat      
Hallo Franziska,

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.

Grüße Vaati
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.497
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.07.2018, 18:58     Titel:
  Antworten mit Zitat      
Hallo,

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.