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

Cell array daten als txt exportieren

 

studi
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 11.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.08.2011, 22:54     Titel: Cell array daten als txt exportieren
  Antworten mit Zitat      
Hallo,

ich importiere no_of_files txt-Tabellen mit nicht-numerischen Inhalten und unterschiedlicher Größe in Matlab. Das funktioniert mit textscan wie gewünscht, indem ich in einer Schleife die einzelnen Dateien öffnen lasse (uigetfile..., hier der Einfachheit halber nur mit einer Datei dargestellt)

Code:

fid = fopen(myfile.txt);
data = textscan(fid, '%s %s %s, 'delimiter' '\t');
mydata = [data{2} data{3}];

ges_data = {};
for i = 1: no_of_files
ges_data = [ges_data{:};mydata];  %  1 cell array mit den Daten
end
 


Beispiel

myfile.txt
abc defg hij rs
yz 11 22 tuv
..

anotherfile.txt
foo foo foo1
foo 99 abc
...

Was mit Zahlen so einfach geht, gestaltet sich bei cell arrays etwas schwieriger: ich möchte nun z. B. die 2. und 3. Spalten aller Dateien gemeinsam in einer .txt-Datei speichern.
save (-ascii) funktioniert nicht,
selbst mit xlswrite bekomme ich nur den gesamten Datensatz geschrieben (das Auskommentieren mit %*s klappt nicht so) und fprintf brauche ich nicht (würde auch sehr lange dauern, die Datensätze sind sehr groß).

Eigentlich kann das doch nicht so schwer sein?

Bezüglich der Allocation von Speicher habe ich mich gefragt, ob es möglich ist, so was wie "zwei Spalten noch unbekannter Länge" anzulegen?
bei
neu = {' ', ' }
und einer Schleife

Code:

for j = 1:irgendwas
  neu = [neu[{:}, 'eintrag1' 'eintrag2' ]
end
 

müsste ich ja am Ende die erste Zeile wieder manuell entfernen?
Oben habe ich ja die {} Variante gewählt, die wohl aber auch nicht optimal ist



edit by denny: Willkommen! Bitte in Zukunft die Codeumgebung nutzen. Danke!
_________________

Nach unserer bisherigen Erfahrung sind wir zum Vertrauen berechtigt, daß die Natur die Realisierung des mathematisch denkbar Einfachsten ist. Albert Einstein
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 12.08.2011, 11:18     Titel:
  Antworten mit Zitat      
Hallo

da muss mit FOR über FPRINTF in Datei ausgeben

Code:

fid2 = fopen('new_file.txt','wt+')
for k=1:size(mydata,1)
   fprintf(fid2, '%s\t%s\n',mydata{k,:});
end
fclose(fid2);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
studi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 11.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2011, 14:20     Titel:
  Antworten mit Zitat      
Das funktioniert soweit, danke!
_________________

Nach unserer bisherigen Erfahrung sind wir zum Vertrauen berechtigt, daß die Natur die Realisierung des mathematisch denkbar Einfachsten ist. Albert Einstein
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: 13.08.2011, 19:11     Titel:
  Antworten mit Zitat      
Hallo studi,

Ich verstehe die Frage nicht. Preallozieren ist nur sinnvoll, wenn man die gesamte Größe des Arrays kennt.

Wenn Dennys Antwort hilft, läßt sie sich noch vereinfachen:
Code:
fid2 = fopen('new_file.txt','wt+')
fprintf(fid2, '%s\t%s\n', transpose(mydata));
fclose(fid2);

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 11.08.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2011, 23:01     Titel:
  Antworten mit Zitat      
Hallo,

dass man zum Preallozieren die gesamte Arraygröße kennen muss, war mir nicht klar. Danke für den Hinweis.
_________________

Nach unserer bisherigen Erfahrung sind wir zum Vertrauen berechtigt, daß die Natur die Realisierung des mathematisch denkbar Einfachsten ist. Albert Einstein
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.