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

Ersetzen von Zeichen in Charakter Cell-Arrays

 

FrK
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 24.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2014, 17:51     Titel: Ersetzen von Zeichen in Charakter Cell-Arrays
  Antworten mit Zitat      
Servus!

Problem ist folgendes:

Ich habe ein I x I großen Cell-Array C, der gefüllt ist mit Char-Werten.

Mit
Code:

möchte ich in diesem alle Kommata durch Punkte ersetzen.

In meinem Fall ersetzt der Befehl allerdings ALLE Zeichen durch Punkte oder was auch immer ich als zweites Argument einsetze.

Jemand eine Idee warum?

Danke und Grüße.
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 19.03.2014, 21:15     Titel:
  Antworten mit Zitat      
Greifst du auf die einzelnen Elemente des Cell zu (C{1,1},C{1,2},... ), oder gibst du tatsächlich direkt C ein?
Vermutlich musst du mit zwei Schleifen arbeiten, mit denen du auf jedes Element des Cellarrays einzeln zugeifst.
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
FrK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 24.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2014, 22:07     Titel:
  Antworten mit Zitat      
Ich gebe direkt C als erstes Argument an.

Paradoxerweise funktioniert es beim ersten mal (ich wende regexprep 2 mal an).

Ich lese aus HTML-Code eine Tabelle aus. Der Code gibt aber Zahlen als CHAR aus, 1000er-Trennzeichen erscheinen als Punkte, "normale" Trennzeichen als Kommata.
Um daraus DOUBLE zu generieren, will ich erst alle Punkte löschen
Code:

regexprep (C,'.','')   %<--so?!
 

und dann Kommata durch Punkte ersetzen
Code:


Wende ich nur letzteren an, funktioniert es, alle Zahlen >999,99 werden mit
Code:

aber zu NaN, da Matlab mit 2 Punkten in einem Value nichts anfangen kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.03.2014, 22:44     Titel:
  Antworten mit Zitat      
Hallo

in REGEXP hat Punkt eine andere Funktion und zwar steht dieses Zeichen für beliebiges Zeichen, wenn du explizit Punkt entfernen möchtest muss man dieses Zeichen escapen

so wäre es richtig:
Code:


% Tausende Trenner entfernen
regexprep(C, '\.', '')

% danach Komma durch Punkt ersetzen
regexprep(C, ',', '.')

% und danach

str2double
 


Zuletzt bearbeitet von denny am 20.03.2014, 15:06, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
FrK
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 24.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2014, 09:17     Titel: Problem gelöst!
  Antworten mit Zitat      
Danke, funktioniert exakt wie beschrieben!
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: 22.03.2014, 15:39     Titel: Re: Problem gelöst!
  Antworten mit Zitat      
Hallo FrK,

Regular Expressions sind wirklich ziemlich schlau. Für einfache Buchstaben-Ersetzungen ist das aber mit Knonen auf Spatzen geschossen, da die Intelligenz immer mehr Rechenzeit benötigt und zu unerwarteten Seiteneffekten führen kann, wie in Deinem Beispiel. Einfacher:
Code:
D = strrep(C, ',', '.');

Gruß, Jan
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.