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

Matrix mit dlmwrite Formate Ordnen ..Wie?

 

ThorstenBWS
Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 11:28     Titel: Matrix mit dlmwrite Formate Ordnen ..Wie?
  Antworten mit Zitat      
Hallo zusammen,

Also ich möchte mit dlmwrite eingelesene Spalten wieder als Matrix zusammenfügen. Die 1. Spalte der Matrix so mit ganzen Int. Zahlen (6Zeichen) formatiert werden und die die anderen Spalten mit 6 Nachkommastellen sowie unten. Die Ordnung der Spalten ist wichtig.

weiß einer wie ich das genau mit dem dlmwrite Befehl umsetzte? Geht es überhaupt mit dem Befehl? Die erste Spalte ist 4 Zeichen eingerückt. Das passt soweit. Nur die einzelnen Formatierungen nicht.


Bzw. so soll das nachher aussehen.

579609 -.297719E+03 -.433890E+03 0.211799E+03
579612 -.287779E+03 -.432725E+03 0.211844E+03
579616 -.257995E+03 -.428939E+03 0.211763E+03
579619 -.248093E+03 -.427490E+03 0.211658E+03


Bis sieht es so aus:

Code:


dlmwrite('Mgest.asc',[M1,M2,M3,M4],'delimiter',' ','coffset',4,...      

   'newline','pc','delimiter',' ', 'precision','%06.7g'...
   'newline','pc', 'delimiter',' ','precision','%06.7g',...                      
   'newline','pc', 'delimiter',' ','precision','%06.7g')  

 

_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden


Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 12:47     Titel:
  Antworten mit Zitat      
Hallo,
Soweit ich weiß, geht das so nicht mit dlmwrite.

Versuch es mal so:

Code:

fid=fopen('Mges.asc','w');
fprintf(fid,['   %d;',repmat(' %12.6E',1,size([M1,M2,M3,M4])-2),'% 12.6E;\r\n'],[M1,M2,M3,M4]');
fclose(fid);
 
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 13:38     Titel:
  Antworten mit Zitat      
Wenn ich das so übernehme kommt die Meldung:

Code:


??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

 

_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 13:46     Titel:
  Antworten mit Zitat      
Ja, da haben sich tatsächlich 2 Fehler eingeschlichen Wink


Versuchs mal so:

Code:



fid=fopen('Mges.asc','w');
fprintf(fid,['   %d;',repmat(' %12.6E;',1,size([M1,M2,M3,M4],2)),'% 12.6E;\r\n'],[M1,M2,M3,M4]');
fclose(fid);
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 13:47     Titel:
  Antworten mit Zitat      
Muss die Datei Mges.asc schon vorhanden sein oder erzeugt er die?
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 13:49     Titel:
  Antworten mit Zitat      
Er erzeugt oder ersetzt sie.
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 13:52     Titel:
  Antworten mit Zitat      
Die Ausgabe ist auf diese Weise leider nicht geordnet...siehe:


579594; -4.322710E+002; -4.308030E+002; 2.128640E+002; 5.795950E+005;-4.273150E+002;
-4.309150e+002; 2.122250E+002; 5.795980E+005; -3.876240E+002; -4.353740E+002; 2.112630E+002;
579600; -3.676700E+002; -4.367190E+002; 2.116270E+002; 5.796010E+005;-3.626690E+002;
-4.369240e+002; 2.116950E+002; 5.796030E+005; -3.376490E+002; -4.368080E+002; 2.112080E+002;
579606; -3.176420E+002; -4.358930E+002; 2.114620E+002; 5.796070E+005;-3.076740E+002;
-4.349620e+002; 2.113220E+002; 5.796090E+005; -2.977190E+002; -4.338900E+002; 2.117990E+002;
579612; -2.877790E+002; -4.327250E+002; 2.118440E+002; 5.796160E+005;-2.579950E+002;
-4.289390e+002; 2.117630E+002; 5.796190E+005; -2.480930E+002; -4.274900E+002; 2.116580E+002;
579621; -2.382110E+002; -4.259780E+002; 2.116190E+002; 5.796220E+005;-2.332720E+002;
-4.251910e+002; 2.117240E+002; 5.796230E+005; -2.283360E+002; -4.243620E+002; 2.118840E+002;
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 13:56     Titel:
  Antworten mit Zitat      
Kann man die dlmwrite Formatierungen mit dem fprintf mischen?

Also die Zeilen z.B. mit:

Damit lässt sich eigentlich gut die Ordnung der Matrix zusammen setzten.

Code:


'delimiter',' ','coffset',4,...               %'D 'delimiter',' ', 'precision','%06.0e'
   'newline','pc', 'delimiter',' ','precision','%06.7g',...                          

_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 14:00     Titel:
  Antworten mit Zitat      
Code:

fid=fopen('Mges.asc','w');
fprintf(fid,['   %d;',repmat(' %12.6E;',1,size([M1,M2,M3,M4],2)-2),'% 12.6E;\r\n'],[M1,M2,M3,M4]');
fclose(fid);
 


Wenn das jetzt auch nicht geht, hab ich keine Lust mehr Wink
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 14:07     Titel:
  Antworten mit Zitat      
..sieht jetzt sehr gut aus.

wenn ich nun an die erste Stelle (Spalte 1) einen Zusatz machen möchte,
genügt das dann mit fprintf? Oder gibts ein Add Befehl den man direkt ansprechnen an?

z.B. setze 30 an stelle ein und die Matrix da runter?
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 14:15     Titel:
  Antworten mit Zitat      
einfach noch

Code:

fprintf(fid,'30\r\n');
 

vor der anderen fprintf Befehl.
\r\n sorgt hierbei dafür, dass du in die nächste Zeile wechselst.
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 14:18     Titel:
  Antworten mit Zitat      
Wenn 30 durch eine Variable ersetzt wird dann mit:

Code:


fprintf(fid,'\r\n',num2str(Q));     ?

 

_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 14:29     Titel:
  Antworten mit Zitat      
So hats geklappt... falls jemand mal braucht

Code:


fprintf(fid,['    ',num2str(Q),'\r\n']);

 

_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2011, 14:31     Titel:
  Antworten mit Zitat      
Ne,
Du willst ja erst die Variable schreiben und dann in ne neue Zeile gehen.
Und du musst die beiden zu einem String verknüpfen.

So:
Code:

fprintf(fid,[num2str(Q),'\r\n']);
 
 
ThorstenBWS
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 40
Anmeldedatum: 04.03.11
Wohnort: Ulm
Version: ---
     Beitrag Verfasst am: 09.03.2011, 14:49     Titel:
  Antworten mit Zitat      
Ein Problem hab ich noch..die Ausgabe leifert mir ab und zu unstetigkeiten über die Tabelle. Wie lege man Tabelle 2-4 so fest, dass es so aussieht?

-.407507E+03 -.433315E+03 0.210905E+03

Momentan sieht es so aus:

Code:


 706927 2.06525E+002 -3.99693E+002 2.12863E+002
   706928 4.34589E+002 -4.11347E+002 2.11179E+002
   706992 -4.24576E+002 -4.11718E+002 2.10424E+002
   706993 -3.84930E+002 -4.15930E+002 2.12906E+002
   706994 -2.96564E+002 -4.04704E+002 2.07329E+002
   706995 -2.26048E+002 -4.03997E+002 2.11088E+002
   706996 -1.59892E+002 -3.78298E+002 2.10615E+002
   706997 -1.39666E+002 -3.82059E+002 2.13920E+002
   706998 -1.41133E+002 -3.72339E+002 2.12062E+002
   706999 -9.35989E+001 -3.65533E+002 2.12805E+002
   707000 -6.57277E+001 -3.58885E+002 2.10138E+002
   707001 -9.90886E+000 -3.43158E+002 2.09847E+002
   707002 9.49127E+000 -3.43249E+002 2.10255E+002
   707003 1.84821E+001 -3.53339E+002 2.12700E+002
   707004 1.92364E+001 -3.43376E+002 2.12431E+002

 
[/code]
_________________

Matlab Newbe
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.