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

fprintf

 

jklein
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 28.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.11.2010, 16:14     Titel: fprintf
  Antworten mit Zitat      
Hallo, ich habe Probleme mit der verwendung von fprintf

ich habe als ergebnisse meiner rechnungen eine reihe von vektoren, die alle gleich lang sind aber einer unterschiedlichen formatierung (für werte wie dicke, geschwindigkeit, drehzahlen etc) bedürften. Das wollte ich übersichtlich in einer textdatei darstellen. Allerdings komme ich bisher mit fprintf auf keinen grünen zweig. HAt jemand eine gute anleitung wie man diese funktion benutzt? Ich verstehe nicht richtig wie man das ganze formatiert und was die "format" marker in dem dem fprintf folgenden teil bewirken.

konkret:

Dies ist meine bisherige Ausgabe:
Code:

lauf =

  1.0e+004 *

    7.9326    7.9409    7.9410    7.9409    7.9326


ldif =

   84.2801    1.0405         0    1.0405   84.2801


dx =

  600.0077  601.1853  601.2000  601.1853  600.0077


n =

    3.5367    3.5298    3.5297    3.5298    3.5367


ndif =

    0.0070    0.0001         0    0.0001    0.0070


Die Vektoren beinhalten die oben angesprochenen werte die jeweils zusammengehören und daher auch in spalten untereinander stehen sollten. Wie kann ich das nun so formatieren, dass ich eine ordentlich aussehende tabelle bekomme?

Bin dankbar für jede hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


yankemen
Forum-Century

Forum-Century


Beiträge: 104
Anmeldedatum: 14.04.10
Wohnort: ---
Version: 32: 2008a & 2010a
     Beitrag Verfasst am: 19.11.2010, 18:51     Titel:
  Antworten mit Zitat      
Moin jklein,

schau mal das Beispiel an, das kommt, wenn Du
Code:
eingibst.
Code:
       x = 0:.1:1;
        y = [x; exp(x)]
        fid = fopen('exp.txt','w');
        fprintf(fid,'%6.2f  %12.8f\n',y);
        fclose(fid);

Du siehst im Vergleich, dass die Datei zwei Spalten hat, während y zwei Zeilen und 11 Spalten hat.

Die Anweisung %6.2f steht für die erste Zahl der zu erzeugenden Zeile, dieses soll mit 6 Vor- und 2 Nachkommastellen darstellen. Die Anweisung %12.8f steht analog für die zweite Zahl der zu erzeugenden Zeile und hat 12 Vor- und 8 Nachkommastellen. \n letztlich erzeugt einen Zeilenumbruch, im Beispiel nach jeder zweiten Zahl. Das ganze steht in Hochkommas, weil ein Format-String übergeben werden soll.
fid steht für die File-ID und y für die Matrix, die gespeichert werden soll.
Jetzt musst Du noch wissen, dass Matlab jede Matrix sowohl via matrix(zeile, spalte) als auch via matrix(elementnummer) ansprechen kann, was die Auflistung
y(1) == y(1,1)
y(2) == y(2,1)
y(3) == y(1,2)
y(4) == y(2,2)
y(5) == y(1,3)

verdeutlichen soll.
Entsprechend kannst Du nun Deine Spalten mittels
Code:
matrix = [lauf, ldif, dx, n, ndif]; % zusammenfügen in einer Matrix !Beachte identische Längen!,
fid = fopen('deine_datei.txt','w'); % Datei anlegen bzw. öffnen,
fprintf(fid, '%1.6f %3.4f %3.4f %3.4f %3.4f \n', matrix); % Formatangaben,
fclose(fid); % Datei schließen
ausgeben.

bei der ersten Spalte gibts sicher noch andere Möglichkeiten, musst mal suchen.

HTH,
yankemen
_________________

Code:
% Kommentare brauchen ein Leerzeichen nach dem %
Gibt es ein Ist und ein Wunsch-Soll? Gibt es Beispiele zum Durchprobieren? Wenn selbstgeschriebene Funktionen aufgerufen werden: können sie bitte angehangen werden? Gab es Fehlermeldungen?
Stimmen die Werte, wenn der Debugger mit Haltepunkten etc. eingesetzt wird?
Danke 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.