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

Einlesen einer heterogen aufgebauten ascii-Datei

 

DonCorleone
Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2016, 15:22     Titel: Einlesen einer heterogen aufgebauten ascii-Datei
  Antworten mit Zitat      
Hi Leute,
ich soll eine ascii Datei einlesen. Allerdings beiß ich mir dabei ziemlich die Zähne aus. Ich kriege zwar die Datei und deren Zahlenwerte eingelesen, aber nicht in der richtigen Reihenfolge bzw. nicht schön in Spalten sortiert. Die Datei enthält einige tabs als Delimiter.
Das einzige was ich an der Datei brauche sind die Zahlenwerte ab Zeile 5 in allen Spalten. Problematisch ist, dass er mir beim einlesen der Werte die Lücken in den ersten beiden Spalten füllt, indem er die Spalten von rechts nach links verschiebt.

Ich hoffe, jemand kann mir mit einem Ansatz helfen! Danke!

PHT3D004.txt
 Beschreibung:

Download
 Dateiname:  PHT3D004.txt
 Dateigröße:  1.55 MB
 Heruntergeladen:  289 mal
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 03.02.2016, 15:44     Titel:
  Antworten mit Zitat      
was hast du denn bis jetzt versucht?
siehe dazu auch den thread aus meiner signatur.
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DonCorleone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2016, 15:53     Titel:
  Antworten mit Zitat      
Folgendes habe ich probiert:

Code:

[C] = textread(filename,'','delimiter',' ','emptyvalue',NaN, 'headerlines',4);
 

Oh sorry, danke für den Hinweis!

Er liest im Grunde alle Zahlenwerte ab der 4ten Zeile ein. Soweit so gut.
Nur schiebt er mir beim Einlesen , in die Lücken der ersten Spalte, Werte von den Spalten rechts davon.
Idealerweise wäre es schön wenn ich Matlab sagen könnte, dass er mir in die erste Spalten-Lücke mit den Werten der Zeile davor auffüllen soll:
1 0.82934

Dann die zweite Lücke auffüllen mit
2 1.0000

usw.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 03.02.2016, 16:03     Titel:
  Antworten mit Zitat      
dann musst du die daten nachträglich nachbearbeiten. du könntest zb mit einer schleife die zeilen durchgehen und in ziele 2 und 3 die werte aus 1 zufügen und so weiter.
könnte mir vorstellen das rem hilfreich ist.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
DonCorleone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2016, 16:11     Titel:
  Antworten mit Zitat      
Danke für deine Antwort. Ich werde es ausprobieren.

Gäbs ne Möglichkeit, dass ich zuerst die ersten beiden Spalten auslese (und entsprechend aufbereite) und dann erst alle Spalten ab Spalte 3? Anschließend dann könnte man einfach die beiden Matrizen zusammenfügen.
Private Nachricht senden Benutzer-Profile anzeigen
 
DonCorleone
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 33
Anmeldedatum: 19.05.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2016, 17:23     Titel:
  Antworten mit Zitat      
Hallo!

Ich habe das Problem nun wie folgt gelöst! Very Happy
Code:

        [C] = textread(filename,'','delimiter',' ','emptyvalue',NaN,'headerlines',4);
        % shift every 2nd and 3rd row by 2 columns rightwards
        C(2:3:end,:) = circshift(C(2:3:end,:), [0, 2]);
        C(3:3:end,:) = circshift(C(3:3:end,:), [0, 2]);
       
        % fill the empty spaces by the value of every 3rd element
        C(2:3:end,1) = C(1:3:end,1);
        C(3:3:end,1) = C(1:3:end,1);
       
 


Die Reihen konnte ich mit circshift verschieben, da in den hinteren Spalten der betreffenden Reihen, nur NaN vorhanden waren. Smile
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.