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

Leerzeilen aus cell array löschen

 

bsh

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.07.2016, 16:41     Titel: Leerzeilen aus cell array löschen
  Antworten mit Zitat      
Hallo,

ich habe ein cell array mit vielen leerzeichen. die einzelnen zeileneinträge (ca. 300) sehen so aus: '_4_._5_6_5_'. Die Unterstriche sind die Leerzeichen. Wie kann ich die Leerzeichen löschen?

Zuerst lade ich die Datei mit textscan ein, dann wandle ich es in einen String um. Die leerzeilen möchte ich dann ersetzen durch strrep. Dann verwende ich str2double und möchte alles dann in einer Matrix A haben.

Code:


fid=fopen('Datei.txt')
data=textscan(fid,'%s')

for k=1:size(data,1)
x=char(data{k,1});
x_=strrep(x,' ','');
x_neu=str2double(x_);
A(k,1)=[x_neu];
end

In x_ sind die Leerzeilen aber noch da, und x_neu liefert dann nur NaN Werte, genauso wie A dann auch.


 


Wenn ich einen String eingebe, wie z.B '_5._6_7_5_' (Unterstriche entsprechen Leerzeichen), dann funktioniert es mit strrep. Kann mir jemand weiterhelfen?


Vielen Dank im Voraus


Harald
Forum-Meister

Forum-Meister


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

wenn du eine Beispieldatei anhängst, erleichtert es das ganze erheblich.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2016, 14:10     Titel:
  Antworten mit Zitat      
Hier ist die Datei. Hier sind es zwei Spalten und nicht eine. Genau so in diesem Format wird sie abgespeichert.

Gruß
 
bsh

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2016, 14:12     Titel:
  Antworten mit Zitat      
Sry. Anhang vergessen.

Datei.txt
 Beschreibung:

Download
 Dateiname:  Datei.txt
 Dateigröße:  11.72 KB
 Heruntergeladen:  348 mal
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.07.2016, 14:47     Titel:
  Antworten mit Zitat      
Hallo,

ein "interessantes" Datenformat.

Ein Problem ist, dass die 'Leerzeichen' keine echten Leerzeichen (ASCII 32) sind, sondern andere nicht darstellbare Zeichen (ASCII 0).

Am einfachsten dürfte es sein, die Datei über ein Skript zeilenweise einzulesen und vorzuverarbeiten. Die modifizierte Datei sollte dann problemlos einlesbar sein.

Code:
fid = fopen('Datei.txt');
fid2 = fopen('Datei_mod.txt', 'w');
while ~feof(fid)
    currentLine = fgetl(fid);
    currentLine = strrep(currentLine, char(0), '');
    currentLine = strrep(currentLine, ' ', '');
    fprintf(fid2, '%s\n', currentLine);
end
fclose(fid);
fclose(fid2);


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.07.2016, 19:22     Titel:
  Antworten mit Zitat      
Hallo Harald
Vielen Dank! So funktioniert es. Prima! Zwei Fragen hätte ich noch. Woher weißt du das es es keine richtigen Leerzeichen sind und zweitens weiß ich nicht genau warum du zweimal strrep verwendest.

Gruß
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Woher weißt du das es es keine richtigen Leerzeichen sind

Code:

wandelt in ASCII um.

Zitat:
zweitens weiß ich nicht genau warum du zweimal strrep verwendest.

Weil zumindest in dieser speziellen Datei auch ein "echtes" Leerzeichen (ASCII 32) enthalten war.

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.