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

.EXP in .PLT automatisieren

 

joooosh
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 01.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 13:41     Titel: .EXP in .PLT automatisieren
  Antworten mit Zitat      
Hallo Zusammen!
Ich hab folgendes Problem: Bin selber Hiwi und habe die glorreiche Aufgabe bekommen, mit MATLAB eine .exp in eine .plt-datei zu konvertieren. Wäre kein Problem, wenn das nicht 2800 .exp-Dateien wären. Meine Frage ist nun, wie es möglich ist diesen Vorgang zu automatisieren. Habe leider keine Erfahrung mit diesem Programm...

Der Prozess sieht folgendermaßen aus:
Ich öffne eine Datei mit diesem Inhalt...

Code:
function DGFlow2Tecplot(a)

setprefix;

% Knoten x y z
p= load('p.dat');
% Anzahl Knoten
np= length(p);
% Connectivity
t= load('t.dat');
% Anzahl Elemente
nt= length(t);

a=

%Ergebnis einladen
%for num=a:a
%if num== 0;
%   filename=([prefix '_init.dat']);
%elseif num > 0 & num < 10;
%  filename=([prefix '_data     ' num2str(num) '.exp']);
%elseif num > 9 & num < 100;
%   filename=([prefix '_data    ' num2str(num) '.exp']);
%elseif num > 99;
%   filename=([prefix '_data   ' num2str(num) '.exp']);
%end

%Ergebnis einladen
for num=a:a
if num== 0;
   filename=([prefix '_init.dat']);
elseif num > 0 & num < 10;
  filename=([prefix '_data     ' num2str(num) '.exp']);
elseif num > 9 & num < 100;
   filename=([prefix '_data    ' num2str(num) '.exp']);
elseif num > 99 & num < 1000;
   filename=([prefix '_data   ' num2str(num) '.exp']);
elseif num > 999;
   filename=([prefix '_data  ' num2str(num) '.exp']);
end

id= fopen(filename,'r');
line= fgets(id);
head= sscanf(line,'%d %d');

val= fscanf(id,'%lf',[head(2) head(1)])';
a=size(val);

h= val(:,1);
qx=val(:,2);
qy= val(:,3);
zneu= val(:,4);


I= find(h>0.005);
u= 0*qx;
v= 0*qy;
u(I)= qx(I)./h(I);
v(I)= qy(I)./h(I);
ures(I)= sqrt(u(I).^2+v(I).^2);

I= find(h<0.005);
h(I)= 0;
qx(I)= 0;
qy(I)= 0;
u(I)= 0;
v(I)= 0;
ures(I)= 0;

fclose(id);


%Tecplot file schreiben
%if num >= 0 & num < 10;
%   name1=([prefix '     ' num2str(num) '.plt']);
%elseif num < 100;
%   name1=([prefix '    ' num2str(num) '.plt']);
%elseif num > 99;
%   name1=([prefix '   ' num2str(num) '.plt']);
%end

if num >= 0 & num < 10;
   name1=([prefix '     ' num2str(num) '.plt']);
elseif num >= 10 & num < 100;
   name1=([prefix '    ' num2str(num) '.plt']);
elseif num >= 100 & num < 1000;
   name1=([prefix '   ' num2str(num) '.plt']);
elseif num > 999;
   name1=([prefix '  ' num2str(num) '.plt']);
end

fid = fopen(name1,'w');

%Header bla bla
fprintf(fid,'TITLE = "%s %d h"\n',prefix,num*100/3600);
fprintf(fid,'VARIABLES = "X", "Y", "Z", "H", "U","V","ures","Zneu"\n');
fprintf(fid,'ZONE T = "%s %d h" , N=%i, E=%i, ZONETYPE=FETRIANGLE \n', prefix, num*writedt/3600, np, nt);
fprintf(fid,'DATAPACKING=BLOCK\n');
fprintf(fid,'VARLOCATION = ([4-8] = CELLCENTERED) \n');

% Daten: erst alle x dann alle y dann alle z in 5 Spalten fr jeden Knoten
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',p(:,1));
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',p(:,2));
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',p(:,3));


% Daten: Cellcentered also Anzahlelemente
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',h);
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',u);
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',v);
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',ures);
fprintf(fid,'%8.4f %8.4f %8.4f %8.4f %8.4f\n',zneu);
fprintf(fid,'\n');

%Connectivity
fprintf(fid,'%i %i %i\n',t(:,1:3)');

fclose(fid);

end

 


In der 14. Zeile "a= " muss jetzt immer die jeweilige Nummer von 1-2800 selber einfügt werden, abgespeichert und dann nochmal geladen werden, so dass die .plt datei abgespeichert wird.

FRAGE: Welchen Befehl kann ich evtl. nutzen, um z.B. mehrere Dateien gleichzeitig einzubeziehen?


Ich hoffe, ihr könnt mein Problem ein wenig nachvollziehen und noch besser, mir helfen!

VIELEN DANK

Grüße,
Josh
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 01.12.2011, 13:52     Titel:
  Antworten mit Zitat      
Hallo Josh,

verstehe ich nicht: die Variable a wird doch übergeben, d.h., wenn Du eingibst
Code:
DGFlow2TecPlot(42);

müsste das das selbe tun, wie wenn Du in Zeile 14 "a=42;" schreibst ... Und diesen Aufruf kannst Du natürlich auch in einer Schleife machen:
Code:
for a=1:2800, DGFlow2TecPlot(a); end


Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
joooosh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 01.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2011, 14:39     Titel:
  Antworten mit Zitat      
Hi Titus!
Wie würdest du deinen Code einbeziehen? Bei mir kommt dann immer ne Fehlermeldung bzw. a undefined..

Wenn ich z.B. einfach
Code:
eingebe, dann kommt zwar keine Fehlermeldung, aber er spuckt mir nur die 20.plt Datei aus. Also irgendwo muss noch ne Info hin, dass der mehrere Dateien erzeugen soll.
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.