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

for Schleife umdrehen

 

noppoel
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 52
Anmeldedatum: 27.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2011, 13:43     Titel: for Schleife umdrehen
  Antworten mit Zitat      
Hallo zusammen!

Vielleicht kann mir jemand bei meinem Problem helfen. Mein Matrix ist mit 0 und 1 besetzt z.B.
1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 0 0 0 0 0 0 0 0 1 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 1 1 1

ich will ein schleife erstellen die 2 Vorgaben erfüllt:
1. wenn eine 0 auf eine 1 folgt (siehe Zeile 2) müssen die Nachfolgenden 8 Spalten ebenfalls 0 sein. Soweit so gut
2. wenn die Zeile von Anfang an 0 ist bzw. von 1 auf Null wechselt und den Wert 0 für mindestens 8 Spalten hat sollen die die darauffolgenden 7 Spalten ebenfalls 0 sein. Siehe Zeile 4: Spalte 1:8 = 0 => 1:15 muss null sein.

Code dafür:
Code:

for i = 1:size(Logic_commit_hc,1)
    for j = 1:(size(Logic_commit_hc,2)-13)
        if Logic_commit_hc(i,j)==1 && Logic_commit_hc(i,j+1) == 0;
            Logic_commit_hc(i,(j+1:j+8)) = 0;
        elseif all(Logic_commit_hc(i,j:j+8)==0) &&   Logic_commit_hc(i,j+13)== 1
            Logic_commit_hc(i,j:j+12) = 0;
        end
    end
end

 


Das Problem bei meiner Schleife ist dass er für Bedingung 2 prüft ob die ersten 8 Spalten Null sind und Spalte 13 = 1 ist. Falls das erfüllt ist wird alles dazwischen auf 0 gesetzt. Problem sind die folgenden Durchläufe also z.B. von j=2 bis j=14, j=2 ist wieder 0 und angenommen j=14 ist 1, dann wird j=13 das eigentlich 1 bleiben soll auf 0 gesetzt- was ich nicht will.

Kann man die Schleife irgendwie verändern dass j=13 usw. in den folge Durchläufen nicht auf 0 gesetzt werden? Jemand ne Idee?

Verständlich genug erklärt? Smile
Private Nachricht senden Benutzer-Profile anzeigen


Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.09.2011, 15:26     Titel:
  Antworten mit Zitat      
Hast du mal versucht anstelle von for eine while Schleife zu verwenden und entsprechend den Laufindex bei einem Treffer nicht um 1, sondern um 8 zu erhöhen (bin mir allerdings nicht sicher, ob ich wirklich verstanden habe was du meinst).
mfg
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.