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

Verständis fprintf

 

Boandl
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2011, 17:21     Titel: Verständis fprintf
  Antworten mit Zitat      
Hallo zusammen,

mit Hilfe des fprintf Befehls lassen sich Daten in Dateien ablegen.

Ich möchte gern eine 4x4 Matrix abspeichern.

Wenn ich nun mit den Befehlen

fid = fileopen('ablage.txt', 'w')
fprintf(fid,'%g %g %g %g\n', Matrix)
fclose(fid)

Die Matrix abspeicher, werden die Zeilen mit den Spalten vertauscht.
Natürlich kann ich zuerst die Matrix soweit aufbereiten u. die Zeilen mit Spalten vertauschen, so dass sie letztendlich korrekt abgespeichert werden - jedoch erscheint mir das ziemlich umständlich.

Gibt es eine elegante Möglichkeit einfach die Matrix direkt abzuspeichern?

Danke.

Schöne Grüße
boandl
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: 14.05.2011, 21:54     Titel: Re: Verständis fprintf
  Antworten mit Zitat      
Hallo Boandl,

Die Elemente werden in der Matrix (und in allen Arrays) spaltenweise gespeichert. Es stehen also im Speicher die Elemente der ersten Zeile hintereinander, dann kommt die zweite usw. Bei Speichern in ein File bleiben die Daten in der gleichen Reihenfolge, so dass sie auch genauso wieder eingelsen werden können.

Wenn Du die Elemente im File gerne in anderer Reihenfolge stehen haben möchtest, musst die Matrix transponiert werden - entweder manuell oder in einem Unterprogramm, was beides eigentlich gleich (un)-elegant ist. Also:
Code:
fid = fileopen('ablage.txt', 'w');
fprintf(fid,'%g %g %g %g\n', transpose(Matrix));
fclose(fid);

Gruß, Jan

PS. Die Code-Umgebung macht den Sourcecode hier im Forum besser lesbar: [ c o d e ] ... [/ c o d e] ( ohne Leerzeichen)
Private Nachricht senden Benutzer-Profile anzeigen
 
Boandl
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.04.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.05.2011, 22:30     Titel:
  Antworten mit Zitat      
Hi Jan,

Danke für die Info und den Zusatz, dass das einlesen einer Datei nach dem gleichen Prinzip wie das schreiben fkt -in sich stimmig-

Also ich speicher die Matrix entweder durch die transponierte M. ab bzw. nutze den save Befehl.

Schöne Grüße
Boandl
Private Nachricht senden Benutzer-Profile anzeigen
 
JN78
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 69
Anmeldedatum: 18.05.09
Wohnort: Stuhr
Version: R2010b, R2011a
     Beitrag Verfasst am: 15.05.2011, 15:32     Titel: Re: Verständis fprintf
  Antworten mit Zitat      
Moin zusammen,

gut zu wissen, das das immer Spaltenweise geschrieben wird.
Wie könnte ich denn eine Matrix bzw. Matrizen abspeichern, bei denen die Spaltenzahlen sich ändern bzw. es deutlich mehr als nur drei oder vier gibt?

Jan S hat Folgendes geschrieben:
...
Wenn Du die Elemente im File gerne in anderer Reihenfolge stehen haben möchtest, musst die Matrix transponiert werden - entweder manuell oder in einem Unterprogramm, was beides eigentlich gleich (un)-elegant ist. Also:
Code:
fid = fileopen('ablage.txt', 'w');
fprintf(fid,'%g %g %g %g\n', transpose(Matrix));
fclose(fid);

Gruß, Jan
...


Ich müsste für mein Problem die Anzahl der "%g" Variable halten können, finde aber keinen Weg das zu lösen.

Gruß Jan
_________________

Ich bin ein Schwamm, denn ich sauge Ideen auf und mache sie nutzbar. Die meisten meiner Ideen gehören ursprünglich anderen Leute, die sich halt nicht mehr die Mühe gemacht haben, sie weiterzuentwickeln. Thomas Alva Edison (1847 - 1931)
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: 15.05.2011, 17:15     Titel:
  Antworten mit Zitat      
Hallo,

wenn du das N mal brauchst:
Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
JN78
Forum-Fortgeschrittener

Forum-Fortgeschrittener



Beiträge: 69
Anmeldedatum: 18.05.09
Wohnort: Stuhr
Version: R2010b, R2011a
     Beitrag Verfasst am: 15.05.2011, 20:39     Titel:
  Antworten mit Zitat      
Hallo Harald,

besten Dank, das klappt wunderbar.

Jan
_________________

Ich bin ein Schwamm, denn ich sauge Ideen auf und mache sie nutzbar. Die meisten meiner Ideen gehören ursprünglich anderen Leute, die sich halt nicht mehr die Mühe gemacht haben, sie weiterzuentwickeln. Thomas Alva Edison (1847 - 1931)
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.