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

Vektor mit Einsen und Nullen durchsuchen

 

Mr.Burns
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2014, 20:53     Titel: Vektor mit Einsen und Nullen durchsuchen
  Antworten mit Zitat      
Hallo liebes Forum,

ich habe einen Vektor, der 10.000 Zeilen lang ist. Dieser ist mehr oder weniger zufällig mit Nullen und Einsen gefüllt, d.h. es gibt kein Muster oder eine bestimmte Reihenfolge in der die Zahlen vorkommen (ist eine meteorologische Messreihe, die nach folgendem Kriterium untersucht und codiert habe:
Südföhn ja --> "1"
Südföhn nein --> "0" )

Jetzt möchte ich in diesem 0/1-Vektor gewisse Lücken schließen: jeder Nuller-Block der <= 6 Zeilen lang ist soll, in 1 umgewandelt werden und jeder Einser-Block der <= 6 Zeilen lang ist, soll in 0 umgewandelt werden.

Hat jemand eine Idee, wie man das macht? Das wäre echt super.

liebe Grüße
Mr. Burns
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 10.01.2014, 00:44     Titel:
  Antworten mit Zitat      
du könntest mittels
Code:
den wechsel von 0 auf 1 und umgekehrt suchen. dann mit
Code:
den index bestimmen und dann immer gucken wie lang die entsprechenden einträge sind.
bei 10000 einträgen kann mann sich aber auch ne forschleife basteln und einfach immer die länge der abschnitte zählen und dann ändern. die halbe sec die man spaart mit wiegt den mehraufwand eine elegante lösung zu ersinnen meiner meinung nach nicht auf ^^.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr.Burns
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2014, 22:03     Titel:
  Antworten mit Zitat      
Danke winkow für deine Antwort. Nach langem Probieren habe ich herausgefunden, wie man eine solche for-Schleife schreiben muss.

Beispiel: Y ist mein Vektor mit Nullen und Einsen und ich möchte Lücken schließen, wo also irrtümlich eine Null drinnensteht.
Code:

for j = 3:(length(Y)-2)
   if Y(j) == 0
      if Y(j-2) == 1 & Y(j+2) == 1
          Y(j) = 1;
      end
   end
end
for j = 2:(length(Y)-1)
   if Y(j) == 0
      if Y(j-1) == 1 & Y(j+1) == 1
          Y(j) = 1;
      end
   end
end
 


Diese beiden Schleifen sind in der Lage Lücken mit maximal 3 Nullern am Stück zu schließen. Will man Lücken mit mehr als 3 Nullern am Stück füllen, so muss man eine dritte Schleife über(!) die anderen beiden hinzufügen (gleiches Prinzip mit j+-3).

Ich wollte meine Lösung hier mal posten, falls jemand das gleiche Problem hat.
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.