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

Punkte aus cell array entfernen

 

RoyalFlush
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2013, 10:20     Titel: Punkte aus cell array entfernen
  Antworten mit Zitat      
Hi,

weiss jemand eine schnelle und einfache Methode wie ich punkte aus den strings eines cell arrays entfernen kann? Mein cell array hat >100000 Eintraege wie diese:

'4636260 673.1 512.1 3629.0 ... 6066.0 4373.0 618.2 .............'
'4636262 672.9 512.3 3629.0 ... 6066.0 4372.0 618.2 .............'
'4636264 672.7 512.5 3629.0 ... 6066.0 4373.0 618.2 .............'
'4636266 672.5 512.7 3629.0 ... 6066.0 4373.0 618.2 .............'
'4636268 672.2 512.8 3629.0 ... 6066.0 4373.0 618.2 .............'
'4636270 672.0 512.9 3630.0 ... 6066.0 4372.0 618.2 .............'
etc.

Ich will nur die mehrfach vorkommenden Punkte entfernen, nicht die Dezimalpunkte der Zahlen. Oder anders gesagt, ich will nur die zahlen in form einer matrix und alles andere entfernen.

Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen


Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 22.10.2013, 10:52     Titel:
  Antworten mit Zitat      
Hallo RoyalFlush

Geht sicherlich auch schöner, aber scheint zielführend:

Code:

for k=1:length(X)
X{k}=strrep(X{k},'...','');
X{k}=strrep(X{k},'..','');
end
 


0,5 sec für 100k CellArray.

Gruß, Kascho
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.10.2013, 12:17     Titel:
  Antworten mit Zitat      
Hallo RoyalFlush,

STRREP arbeitet auch gleich auf dem ganzen Cell-Array, man kann sich die Schleife also sparen.
Aber Kascho's Vorschlag hat ein anderes Problem: Wenn der Orginal-String '....' enthält, macht der erste Austausch daraus '.' und der wird dann nicht weiter erkannt.

Wie wäre es mit:
Code:
S = sprintf('%s*', C{:});  % C ist Dein orginal
Index = strfind(S, '..');
Index = unique([Index, Index + 1]);
S(Index) = [];
S(end) = [];
C = regexp(S, '*', 'split');

Hier wird davon ausgegangen, dass die Orginal-Strings auf keinen Fall einen * enthalten. Zur Sicherheit sollte man das unbedingt überprüfen!

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Kascho
Forum-Century

Forum-Century


Beiträge: 195
Anmeldedatum: 24.03.10
Wohnort: Jena
Version: R2008b ... :(
     Beitrag Verfasst am: 22.10.2013, 12:22     Titel:
  Antworten mit Zitat      
Ahh, stimmt Jan. Den Fall hatte ich nicht bedacht.
Wozu ist das:

Code:

?
Private Nachricht senden Benutzer-Profile anzeigen
 
RoyalFlush
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 82
Anmeldedatum: 27.10.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2013, 22:49     Titel:
  Antworten mit Zitat      
Vielen Dank Kaschko und Jan,
Code:
war hierfür der richtige Befehl!

Danke!
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.