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

Export als txt.file: Ausrichtung Titel zu Spalteninhalt?!

 

swizz-john
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 12.10.2015, 09:41     Titel: Export als txt.file: Ausrichtung Titel zu Spalteninhalt?!
  Antworten mit Zitat      
Hi Leute,

in diesem Forum habe ich bereits wichtige Fortschritte zum Export von Daten als txt.file machen koennen!

hier ist ein Link zum vorangegangenen Post:

http://www.gomatlab.de/export-als-t.....eberschriften-t38927.html

Nun habe ich folgenden Code, welcher Spaltenueberschriften generiert und die Spalten mit Inhalt fuellt:

Code:
Bus_indizes=[1,2]
names={'value1', 'value2', 'value3'}

A = [ 4 45 345 34 5 1;
     34 88 455 73  12 12;
     34 88 455 73 4 56];

% Number of columns

N = 6;

ext='.txt'; %extension in which files will be saved
filename=['text_dyn',ext];
   
% Create/open file discarding content

fid = fopen(filename,'wt');

% Write header

fmt=[];
for k=1:numel(Bus_indizes)
    for l=1:numel(names)
       fmt=[fmt,sprintf('Bus %i(%s) \t',Bus_indizes(k),names{l})]
    end
end

fprintf(fid,['Time\t',fmt(1:end-1) '\r\n']);
   
% Write data

fmt = repmat('%.f\t',1,N)
fprintf(fid, ['%.i\t' fmt(1:end-2) '\r\n'],[[1:size(A,1)]',A]');

fclose(fid);


Leider ist es so, dass die Spaltenueberschriften ueberhaupt nicht an den Double Werten in den Spalten ausgerichtet werden.
Wie kann man sicher stellen, dass eine vertikale Ausrichtung an den Spaltenueberschriften geschieht?

Ich habe dazu hier

http://www.mathworks.com/matlabcent.....reader/view_thread/321579

was gefunden, werde da aber leider nicht so schlau raus und bin dankbar fuer eure Hilfe!

Schoene Gruesse, swizz-john
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

ich würde es, wie im vorherigen Thread auch geschrieben, mit Tables versuchen.

Grüße,
Harald
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: 12.10.2015, 12:02     Titel: Re: Export als txt.file: Ausrichtung Titel zu Spalteninhalt?
  Antworten mit Zitat      
Hallo swizz-john,

Code:

fmt = repmat('%.f\t',1,N)
fprintf(fid, ['%.i\t' fmt(1:end-2) '\r\n'],[[1:size(A,1)]',A]');

Wenn Du ein File im Text-Mode öffnest, reicht \n als Zeilen-Umbruch. \r\n und Text-Mode 'wt' ist doppelt vermoppelt.

Du kannst die Breiten der Header bestimmen und dann z.B. '%20.5f' als Format verwenden, wenn die Zahlen 20 Buchstaben ausfüllen sollen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 12.10.2015, 14:08     Titel:
  Antworten mit Zitat      
Hi,

@ Harald: Dank dir! Wenn ich 'writetable' benutze muesste ich aber zuerst diesen table entsprechend definieren und dann habe ich das gleiche Problem mit den Abstaenden der Zahlen oder nicht? so sieht das jedenfalls in der Doku aus.

http://www.mathworks.com/help/matlab/ref/writetable.html

@ Jan: Danke fuer die Info! Wie kann ich das denn erreichen. Die Breite des headers messen und wo konkret muss ich das asl Argument hineinschreiben?

hier in diesem Beispiel sieht es so aus, als ob das ganze schon ausgerichtet ist. Ich kann das aber irgendwie nicht erweitern mit einer weiteren Matrix dran.

Code:
x = 0:.1:1;
A = [x; exp(x)];

fileID = fopen('exp.txt','w');
fprintf(fileID,'%6s %12s\r\n','x','exp(x)');
fprintf(fileID,'%6.2f %12.8f\r\n',A);
fclose(fileID);



Code:
 x            exp(x)
  0.00   1.00000000
  0.10   1.10517092
  0.20   1.22140276
  0.30   1.34985881
  0.40   1.49182470
  0.50   1.64872127
  0.60   1.82211880
  0.70   2.01375271
  0.80   2.22554093
  0.90   2.45960311
  1.00   2.71828183



Ich komme mit den ganzen Argumenten von fprint nicht so klar! Mir wuerde es schon reichen, wenn ich einfach eine maximale Lanege einer Headerueberschrift als Referenz haette und damit den Header als auch jeden Wert darunter ausrichten koennte!

Gibt es dazu vllt. ein leichtes Beispiel?

MfG swzz-john
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 13.10.2015, 13:24     Titel:
  Antworten mit Zitat      
Hi,

ich habe jetzt alles in ein cell array gepackt und die writetable umgebung genutzt.

Code:
T = cell2table(C,'VariableNames',header);
 
% Write table T to a text file.
 
writetable(T,'tabledata.txt')
 
  [file,path] = uiputfile('*.txt');
 dlmwrite([path file], T);


Wenn ich versuche, den Table als Argument zu uebergeben erhalte ich folgenden error!:

Code:
Undefined function 'real' for input arguments of type 'table'.

Error in dlmwrite (line 190)
                    str = sprintf('%.*g%+.*gi',precn,real(m(i,j)),precn,imag(m(i,j)));


Gibt es eine Moeglichkeit
Code:
in verbindung mit einem Table zu nutzen , so dass der user ausschen kann, wo er die textdatei speichern moechte?

Danke fuer eure Hilfe, swizz-john
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du würdest da doch zweimal schreiben?? Wenn, dann

Code:
T = cell2table(C,'VariableNames',header);
 
% Write table T to a text file.  
  [file,path] = uiputfile('*.txt');
writetable(T,fullfile(path, file))


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 13.10.2015, 14:21     Titel:
  Antworten mit Zitat      
Vielen Dank Harald!!! Perfekt! klappt alles super! Danke an dich und alle anderen Helfer 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.