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

txt Datei einlesen ohne Import Wizzard

 

Rob33
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.07.2013, 21:38     Titel: txt Datei einlesen ohne Import Wizzard
  Antworten mit Zitat      
Hallo zusammen!
Zunächst einmal bin ich in Sachen MatLab ein blutiger Anfänger, aber wegen einer Studienarbeit bin ich nun gezwungen mich in MatLab einzuarbeiten und bin prompt auf ein Problem gestoßen.
Im Rahmen dieser Studienarbeit muss ich eine txt Datei auswerten, die im Grunde so aufgebaut ist:

Zeit Lenkwinkel1 Lenkwinkel2 Radrechts Radlinks
0,04 0,288696289 2,153930664 3,309020996 3,059387207
0,05 0,293884277 2,151184082 3,320007324 3,036804199
0,06 0,295715332 2,148132324 3,209533691 3,021240234
0,07 0,296630859 2,144470215 3,277282715 3,018188477
0,08 0,294799805 2,148132324 3,310241699 2,952575684


Hier ist nochmein Anfang:

Textread(‘Ma1.txt’, ‘%s’, ‘whitespace’,’’, ‘delimiter’,’\n’)

Würde gerne die Datei in den Matlab Workspace einfügen ohne den Import Wizzard zu benutzen.

Wäre echt nett, wenn mir da jemand helfen könnte.

MfG und vielen Dank schon mal!

Ma1.txt
 Beschreibung:

Download
 Dateiname:  Ma1.txt
 Dateigröße:  962 Bytes
 Heruntergeladen:  711 mal
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: 09.07.2013, 23:10     Titel: Re: txt Datei einlesen ohne Import Wizzard
  Antworten mit Zitat      
Hallo Rob33,

Was genau bedeutet "die Datei in den Workspace einfügen"? Soll dies als String importiert werden, oder als Struct mit den Feldern "Zeit", "Lenkwinkel1" etc?

Zunächst müssten die Kommas in Dezimal-Punkte umgewandelt werden. Das geht zwar auch als Programm, wenn es aber nur um wenige Files geht, wäre das auch im Editor zu erledigen.

Matlab ist Case-Sensitive und Strings werden von einfachen Hochkommas eingefasst. Dein Codebeispiel weist deshalb mehrere Fehler auf.

Zitat:
Textread(‘Ma1.txt’, ‘%s’, ‘whitespace’,’’, ‘delimiter’,’\n’)

Besser:
Code:
textread('Ma1.txt', '%s', 'whitespace', ’'', 'delimiter', '\n')


Gruß, Jan
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: 09.07.2013, 23:58     Titel:
  Antworten mit Zitat      
Code:
fid=fopen('Ma1.txt');
a=textscan(fid, '%f32 %f32 %f32 %f32 %f32','delimiter','\t','HeaderLines',1);
fclose(fid);

vorher die , in . umwandeln in der txt datei. wenn das nicht geht muss mans alles als string einlesen und dann selber umwandeln. zum thema datei einlesen gibt es hier schon einiges im forum. einfach mal suche benutzen
grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Rob33
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 10:08     Titel:
  Antworten mit Zitat      
Hallo,

danke erst einmal für die schnellen Antworten!

Leider komme ich immer noch nicht dahin, wo ich hin will. Habe mal ein paar Screenshots gemacht. Mein Problem liegt darin, dass in der Workspace nur eine 8x1 Cell dargestellt wird, ich möchte aber eine 8x5 haben. Die Zahlen sind in der Datein durch einen Tab getrennt.

Vielen Dank schon mal für Eure Hilfe!!

maa1.txt
 Beschreibung:

Download
 Dateiname:  maa1.txt
 Dateigröße:  432 Bytes
 Heruntergeladen:  734 mal
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: 10.07.2013, 10:54     Titel:
  Antworten mit Zitat      
Hallo Rob33,

Bitte poste keine riesigen Bilder, die hauptsächlich weiß sind.

Zitat:
ich möchte aber eine 8x5 haben.

Das erfordert immer noch einiges Raten: Was genau ist "eine 8x5"?

Verstehe ich es richtig, dass Du die Kommas nun in Punkte umwandeln konntest?

Wie wäre es mit:
Code:
FID = fopen(FileName, 'r');
if FID == -1, error('Cannot open file'); end
Head = fgetl(FID);
Value = sscanf(FID, '%g', [5, Inf]).';
fclose(FID);

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Rob33
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 11:23     Titel:
  Antworten mit Zitat      
Hallo Jan,

leider funktioniert auch das nicht. Mit einer 8x5 Cell meine ich, dass alles Spaltenweise dargestellt werden soll. Zurzeit steht ja alles in einer Spalte (ans <8x1 cell>) ich hätte aber gerne ans <8x5 cell> dargestellt.

PS. Ja die Kommas hab ich durch Punkte ersetzt.
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: 10.07.2013, 11:32     Titel:
  Antworten mit Zitat      
Hallo Rob33,

Zitat:
leider funktioniert auch das nicht.

Was bedeutet das genau? Bekommst Du eine Fehlermeldung oder unterscheidet sich das Ergebnis von Deinen Erwartungen?

Zitat:
Mit einer 8x5 Cell meine ich, dass alles Spaltenweise dargestellt werden soll.

Das verstehe ich nicht. Mein Code sollte eigentlich ein [8 x 5] Double Matrix erzeugen. Wenn Du ein CELL benötigst, sollte NUM2CELL dies erledigen können. Rechnen kann man aber mit Matrizen besser.

Mit TEXTREAD liest Du die Datei zeilenweise als String ein und erhälst so einen Cell-String Vektor.

Gruß, Jan

PS. Ich habe nun die riesigen Bilder gelöscht, da man ansonsten diesen Thread nicht mehr sinnvoll lesen kann. Zudem waren sie für die Problembeschreibung nicht hilfreich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Rob33
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 09.07.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.07.2013, 11:56     Titel:
  Antworten mit Zitat      
Ich bekomme da einen Fehler.

>> FID = fopen('maa1.txt', 'r');
if FID == -1, error('Cannot open file'); end
Head = fgetl(FID);
Value = sscanf(FID, '%g', [5, Inf]).';
fclose(FID);
??? Error using ==> sscanf
First argument must be a string.

Es soll nachher eine Spalte für die Zeit, eine für den Lenkwinkel usw geben und nicht alles in einer Spalte stehen.
Hab mir im Forum und bei goolgle schon die Finger wund gesucht, aber nichts gefunden...
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: 10.07.2013, 14:31     Titel:
  Antworten mit Zitat      
Hallo Rob33,

Das ist ein Tippfehler, auf den man mit nicht arg zu viel Aufwand kommen könnte: Es muss "fprintf" heissen, nicht "sprintf".

"Es soll nachher eine Spalte stehen" ist mir nicht klar. Heißt das, dass Du einen Splatenvektor bekommen möchtest, dessen Name "Zeit" lautet?

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 - 2024 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.