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

Suchen und ersetzen von STRING (bzw. CHAR)

 

Silberschild
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2009, 15:44     Titel: Suchen und ersetzen von STRING (bzw. CHAR)
  Antworten mit Zitat      
Hallo Leute,

ich muss für eine Studienarbeit CSV-Dateien mit Sensordaten einlesen.

Diese bekomme ich inzwischen auch eingelesen, nur leider muss ich ich die CSV-Dateien mit einem Editor und mehreren "Suchen und ersetzen"-Durchläufen erst passend "hinbiegen".

Es sind in manchen Spalten folgende Zeichenketten enthalten:
Zitat:
<geom>
<null>
null

Mitunter nur in einigen Zeilen, mitunter in der ganzen Spalte.

Diese müssen sich doch beim Einlesen von Matlab durch mein m-File aufspüren und durch die Zahl
Zitat:
0
ersetzen lassen, oder?
Habe dazu leider nichts gefunden was helfen würde.

P.S.: Ja, bin ein Anfänger...
Confused
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.10.2009, 17:56     Titel:
  Antworten mit Zitat      
Hallo,

strrep sollte helfen, z.B.

Code:
text = strrep(text, '<geom>', '0');


(Das ist allerdings dann zunächst eine 0 als String)

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Silberschild
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 21.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.10.2009, 19:01     Titel:
  Antworten mit Zitat      
Danke für die Antwort.
Sehe ich das richtig, dass ich dann die ganze CSV zellenweise einlesen muss, auf jede vorkommende CHAR-Folge prüfen und ggf. ersetzen, und danach als ein Cellarray hätte?
Gibt es eine Möglichkeit das beim bisherigen Einlesen zu prüfen? Bzw. eine allgemeine Form zu finden, bei der man im Vorfeld nicht die STRING-Ketten kennen muss?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.10.2009, 19:05     Titel:
  Antworten mit Zitat      
Hallo,

wie liest du die Datei denn bisher ein? Es reicht an und für sich, den Befehl (quasi nachträglich) auf die Variablen anzuwenden, in denen die problematischen Strings vorkommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
woodiii
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 03.11.09
Wohnort: Hannover
Version: 2010a
     Beitrag Verfasst am: 03.11.2009, 02:17     Titel:
  Antworten mit Zitat      
Also Silberschild ließt die CSV-Datei so ein:

Code:
[test{1:21}]=textread('specif_nov.csv','%s %s %*s %s %s %s %s %*s %*s %*s %*s %*s %*s %*s %s %s %s %s %s %s %*s %*s %*s %*s %*s %*s %*s %s %s %s %*s %*s %s %s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %s %s %s %s %*s %*s %*s','delimiter',';','headerlines',1);


Man könnte einige %s auch durch %n ersetzen, so dass Zahlen gleich richtig eingelesen werden. Aber das Skript soll möglichst allgemein sein, da der Spalteninhalt über verschiedene Dateien variiert.

Nun sollen im Prinzip zwei Dinge geschehen (und das ist uns leider noch nicht einwandfrei geglückt):
Die 1x20 Cell, die durch den o.g. Code entstanden ist, soll aufgespalten werden, so dass die erste Spalte der CSV als Spaltenvektor, Variable z.B. "Spalte1", im Format 'double' auftaucht UND wenn <geom>, <null> oder null in einer Spalte stehen, sollen diese durch "0" ersetzt werden und die ganze Spalte soll dann natürlich auch im Format 'double' vorliegen.
Wie könnte man das schnell und einfach realisieren?
Wie oben einlesen und dann Zeilenweise kontrollieren lassen? Oder so?

Vielen Dank für Eure Hilfe!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

probiert es mal in etwa so:

Code:
ersetzt = strrep(test{1}, '<null>', 0);
ersetzt = strrep(test{1}, 'null', 0);
ersetzt = strrep(ersetzt, '<geom>', 0);
werte = str2num(ersetzt)


Ist natürlich etwas schwierig, ohne mit der Datei experimentieren zu können, aber so in der Richtung sollte es für die erste Spalte funktionieren.

Grüße,
Harald
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.