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

Schreiben einer Matrix in ein dat-file

 

Tradinno
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 02.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2013, 11:02     Titel: Schreiben einer Matrix in ein dat-file
  Antworten mit Zitat      
Hallo zusammen,

ich möchte die Elementdefinition eines Ansys-Inputfiles (dat-file) nachdem ich sie in Matlab geändert habe, wieder zurück in ein dat-file schreiben. Bisher mache ich das mit fprintf und einer doppelten for-Schleife, was funktioniert, jedoch v.a. bei höherer Elementzahl sehr langsam ist:

Code:
Elemente_Felder = size(Elemente);
Elemente_Felder = Elemente_Felder(1,2);
Anzahl_Elemente=length(Elemente);

fid = fopen('Input.dat','a')

for i = 1:i_Anzahl_Elemente_eblocks(1,1)  
    for j = 1:i_Elemente_Felder
        fprintf(fid,'%9s',num2str(Elemente(i,j)));
    end
    fprintf(fid,'\n');
end

fclose(fid);

 
Kennt jemand von Euch eine Lösung, die das schneller macht? Wichtig ist, das die Formatierung genauso ist, wie im obigen Code (Abstand von der letzten Ziffer der einen Zahl zur letzten Ziffer der nächsten beträgt 9 Zeichen, siehe Anhang), da es Ansys sonst nicht lesen kann.

Ich würde mich sehr freuen, wenn mir jemand helfen kann.
Viele Grüße
Tanja

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]

Input.txt
 Beschreibung:

Download
 Dateiname:  Input.txt
 Dateigröße:  26.49 KB
 Heruntergeladen:  300 mal
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: 28.06.2013, 11:29     Titel: Re: Schreiben einer Matrix in ein dat-file
  Antworten mit Zitat      
Hallo Tradinno,

Es ist nicht klar, welchen Wert i_Anzahl_Elemente_eblocks hat und wozu "Elemente_Felder" definiert wird, obwohl später "i_Elemente_Felder" benutzt wird.

Aber der Kernpunkt des FPRINTF ließe sich so lösen:
Code:
fid = fopen('Input.dat', 'a');   % oder 'w'?
n = size(Elemente, 2);
Fmt = [repmat('%9d', 1, n), '\n'];
fprintf(fid, Fmt, Elemente.');
fclose(fid);

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 02.05.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.06.2013, 12:01     Titel:
  Antworten mit Zitat      
Vielen lieben Dank, Jan...Du hast damit mein Wochenende gerettet, ich hab schon ewig rumprobiert!
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: 28.06.2013, 16:46     Titel:
  Antworten mit Zitat      
Hallo Tradinno,

Es freut mich, wenn es nun funktioniert. Dann wünsche ich mal ein schönes Wochenende!

Gruß, Jan
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.