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

Beliebiges Textfile einlesen und in uint8 konvertieren??

 

Neo85
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 18:20     Titel: Beliebiges Textfile einlesen und in uint8 konvertieren??
  Antworten mit Zitat      
hallo,

ich würde gerne einen beliebig langen text aus einer datei einlesen und diesen text/diese daten dann in einen uint8-vektor konvertieren, weil ich die daten nachher weiterverarbeiten muss/möchte.

wenn ich das ganze hardgecoded mache, funktioniert das ganz gut (aber nur mit den ... am zeilenende?), also so (ein beliebiger text von der matlab-hilfe):

data = ['Practical purposes often demand a separation of intermediate and leaf nodes'...
' during that process. If you do that store the leaf nodes in an array of size'...
' alphabetsize-1 and fill it from left to right. Since intermediate nodes are'...
' constructed in the sequence they are used you just need two pointers;'];

data = uint8(data);

-- das funktioniert wie gesagt so wie es soll.

wenn ich nun aber einen beliebigen text aus einem .txt-file einlesen möchte und dann mittels uint8(data) konvertieren möchte, funktioniert das nicht.

ich hätte es so versucht:
data = textread('bla.txt','%s','delimiter','\n','whitespace','');
data = uint8(data);

dann bekomme ich aber eine fehlermeldung in der art:
??? Error using ==> uint8
Conversion to uint8 from cell is not possible.

was mache ich falsch oder ist es nicht möglich, aus einem beliebigen textfile einen string zu generieren? bzw. daten aus einem textfile in einen uint8-vektor zu konvertieren?

danke.
Private Nachricht senden Benutzer-Profile anzeigen


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 11.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.03.2012, 23:11     Titel:
  Antworten mit Zitat      
Hallo Neo85,
Dein Problem ist genau das, was die Fehlermeldung sagt:
Aus einem cell-Array kann kein uint8 werden.
Dein textread erzeugt für jede Zeile einen String, der für sich alleine in uint8 umgewandelt werden kann, der Rückgabewert ist aber ein cell-Array das aus eben diesen Strings besteht.
Je nach dem was Du willst, hilft vielleicht ein
Code:

data=cellfun(@(x)uint8(x),data);
 

oder gleich direkt ein fread.
Grüße
Sirius
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: 28.03.2012, 14:48     Titel: Re: Beliebiges Textfile einlesen und in uint8 konvertieren??
  Antworten mit Zitat      
Hallo Neo85,

Wie wäre es mit:
Code:
FID = fopen(FileName, 'r');
if FID == -1, error('Cannot open file'); end
d = fread(FID, Inf, '*uint8');
fclose(FID);

Das Problem ist, dass TEXTSCAN eine CELL zurückliefert, die wiederum einen CELL STRING enthält. Zum Einlesen eines Textes als Buchstaben-Strom ist das ein Overkill.

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

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 20.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.03.2012, 15:01     Titel:
  Antworten mit Zitat      
vielen dank für eure 2 antworten!

die lösung von jan funktioniert perfekt - genial! ich hatte fread schon versucht, jedoch den precission parameter nicht oder falsch verwendet... dabei gehts doch so einfach...! Rolling Eyes

danke! Wink
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.