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

Bestimmte Wörter in cell array finden und Zeile ersetzen

 

Dexter
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2014, 11:47     Titel: Bestimmte Wörter in cell array finden und Zeile ersetzen
  Antworten mit Zitat      
Hallo Leute,

ich habe ein Problem mit dem Finden und verändern von Einträgen in einer Cell. Ich habe an die Datei mal die Cell-Variable angehängt, damit ihr euch ein Bild von dem Problem machen könnt.

In diesem Ding kommen recht lange unterschiedliche strings vor, in denen ich bestimmte Wörter finden will. Zunächst einmal sollen alle Zeilen in denen kein Broken und kein Overcast vorkommt durch den Wert 5000 ersetzt werden.

Versucht die Zeilen zu finden habe ich es mit strmatch und strfind. Beides hat nicht funktioniert.
Vielleicht hat einer von euch ja eine Idee oder einen Vorschlag wie ich das machen kann.

Viele Grüße,
Dexter

Wolken.zip
 Beschreibung:

Download
 Dateiname:  Wolken.zip
 Dateigröße:  61.06 KB
 Heruntergeladen:  259 mal
Private Nachricht senden Benutzer-Profile anzeigen


Dexter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2014, 14:09     Titel:
  Antworten mit Zitat      
Da ich meinen Beitrag anscheinend nicht editieren kann....
Das Ziel hat sich ein wenig verändert. Besser wäre es, wenn es möglich wäre im ersten Schritt die einzelnen Zeilen nach jeder Höhenangabe zu trennen. was vorher so aussah:
Code:

'Few clouds at 1000ft, Broken clouds at 1300ft, Overcast at 2000ft'
 

soll anschließend so aussehen:
Code:

'Few clouds at 1000ft', 'Broken clouds at 1300ft', 'Overcast at 2000ft'
 


Also das aus einer Spalte drei Spalten werden. Bei den Zeilen, in denen z.B. nur
Code:

'Few clouds at 1000ft'
 

steht, da können die zusätzlichen Spalten mit Nullen gefüllt oder leer gelassen werden (falls möglich).

Das würde mich einer Lösung meines Problems schon deutlich nächer bringen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 28.08.2014, 14:28     Titel:
  Antworten mit Zitat      
Hallo,

dieses kleine Teilproblem lässt sich (in neueren Versionen??) mit strpslit() lösen, in älteren Versionen kann man dafür textscan oder regular expression verwenden:
Code:
s = 'Few clouds at 1000ft, Broken clouds at 1300ft, Overcast at 2000ft'

x = textscan(s, '%s', 'delimiter', ',');
y = regexp(s,',','split')
 


Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2014, 17:10     Titel:
  Antworten mit Zitat      
Okay das funktioniert soweit! Zumindest mit den regular expressions. Textscan verlangt doulbe oder string als input und für strsplit ist meine Matlab version zu alt.

Jetzt habe ich allerdings innerhalb meiner nun erstellten cell die aufgesplitteten strings wiederum in 1x2 oder 1x3 cells. Wie kann ich daraus nun einen Vektor erstellen, der den zweiten bzw. dritten Eintrag jeder der 1x2 oder 1x3 cells in die zweite Spalte der übergeordneten cell verschiebt?

Denn letztendlich möchte ich das Ganze hinterher in eine Exceltabelle schreiben, was in diesem Zustand aber nicht geht...
Private Nachricht senden Benutzer-Profile anzeigen
 
Dexter
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 68
Anmeldedatum: 22.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.09.2014, 12:00     Titel:
  Antworten mit Zitat      
Okay, ich habe es jetzt hinbekommen die Strings zu teilen, die Zahlen entsprechend zu extrahieren und auch diese in Spalten aufzuteilen. Ich habe jetzt also sowas:

1 2 3 4
2 FEW 100 BKN 600
3 OVC 400
4 BKN 500
5 FEW 100 SCT 300

Nun würde ich gerne über den gesamten Bereich in diesem cell array die Zeilen finden, in denen BKN steht und den Zahlenwert hinter BKN entsprechend mit ausgeben. Kommt zweimal BKN vor, soll der geringere Wert ausgegeben werden. Den ausgegebenen Wert am besten mit der zugehörigen Zeilennummer in eine neue Variable.
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.