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

Codeabschnitt mit mehreren Laufvariablen bearbeiten

 

Mino
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 17.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2017, 09:43     Titel: Codeabschnitt mit mehreren Laufvariablen bearbeiten
  Antworten mit Zitat      
Hallo liebe Gemeinde,
Mein Name ist Mino, ich Studiere Wirtschaftsingenieurwesen und beschäftige mich im Rahmen meiner Abschlussarbeit mit der Analyse von Strömungsfeldern. Hierzu verwende ich Matlab zur Datenanalyse.
Im Moment geht es mir vorerst darum die benötigten Daten mit Hilfe des Simulationsprogramms Ansys zu erstellen. Hierzu möchte ich Messpunkte definieren an denen meine entsprechenden Variablen abgefragt werden. Da ich viele (89351) Messtellen definieren muss möchte ich ein Skript erstellen welches mir den CCL-Code zur Definition der Messpunkte erstellt.
Ich habe nun den folgenden Codeabschnitt erstellt:

Code:

      MONITOR POINT: Monitor_1
        Cartesian Coordinates = 0.0002 [m], 0.0002 [m], 0.0005 [m]
        Coord Frame = Coord 0
        Option = Cartesian Coordinates
        Output Variables List = Vorticity
        MONITOR LOCATION CONTROL:
          Interpolation Type = Nearest Vertex
        END
        POSITION UPDATE FREQUENCY:
          Option = Initial Mesh Only
        END
      END
 


Ich möchte diesen Codeabschnitt wie folgt vervielfältigen:

1. Im Abschnitt "MONITOR POINT:" soll die Zahl bei jeder Vervielfältigung um 1 erhöht werden.
2. Im Abschnitt "Cartesian Coordinates = " soll die erste Variable immer um 0.0002 erhöht werden bis der Wert 0.0898 erreicht ist. Dann soll die zweite Variable um 0.0002 erhöht werden und die erste Variable wieder bei 0.0002 anfangen. Dies soll solange durchgeführt werden bis die zweite Variable einen Wert von 0.0398 erreicht hat.

Im Ergebniss sollten dann alle Monitorpunkte untereinander Stehen und dann am besten in einer Textdatei oder ähnlich ausgegeben werden.

Ich habe leider kaum Vorkenntnisse, bin aber bereit mich einzuarbeiten.

Ist es möglich dieses Problem in Matlab zu lösen oder muss ggf. auf eine andere Sprache zurückgegriffen werden?

Schöne Grüße
Mino
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.08.2017, 09:55     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich das richtig verstehe, möchtest du eine lange Textdateien mit Abschnitten dieser Gestalt erstellen. Hast du es schon geschafft, eine Datei mit einem solchen Abschnitt aus MATLAB heraus zu erstellen? Dann wäre es "nur" noch eine Frage, geschachtelte for-Schleifen zu basteln, um die verschiedenen Blöcke zu schreiben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mino
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 17.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2017, 10:34     Titel:
  Antworten mit Zitat      
Hallo Harald,
du hast mich genau richtig verstanden.
Ich habe es noch nicht geschafft eine solche Textdatei aus Matlab zu erstellen, mache mich aber jetzt sofort dran. Bis jetzt bin ich soweit, dass die entsprechende Textdatei goeffnet wird und in sie geschrieben wird. Allerdings hapert es jetzt gleich an dem Zeilenumbruch.

Ich habe es jetzt soweit geschrieben:

Code:
%Oeffnen der Textdatei
fid = fopen('C:\Matlab\ccl\monitor.txt' , 'w');

%Text
fprintf(fid, '%s\n', 'MONITOR POINT: Monitor_1', fid, '\r\n', 'Cartesian Coordinates = 0.0002 [m], 0.0002 [m], 0.0005 [m]');


Ich habe gelesen dass die Befehle \r\n zur Erstellung eines Zeilenumbruchs gedacht sind, allerdings schlägt sich dies nicht in der erstellten Textdatei nieder sondern sieht dann so aus:

MONITOR POINT: Monitor_1\r\nCartesian Coordinates = 0.0002 [m], 0.0002 [m], 0.0005 [m]

Rolling Eyes

Schoene Grüße
Mino
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.08.2017, 10:52     Titel:
  Antworten mit Zitat      
Hallo,

du meinst vermutlich:
Code:
fprintf(fid, '%s\n', 'MONITOR POINT: Monitor_1')
fprintf(fid, '%s\r\n', 'Cartesian Coordinates = 0.0002 [m], 0.0002 [m], 0.0005 [m]');


Das würde ich dann umwandeln in:
Code:
fprintf(fid, 'MONITOR POINT: Monitor_%.0f\n', nummer)
fprintf(fid, 'Cartesian Coordinates = %.4f [m], %.4f [m], %.4f [m]'\r\n', x, y, z);


Die beteiligten Variablen müssen dann in der Schleife variiert werden.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Mino
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 17.08.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2017, 18:41     Titel:
  Antworten mit Zitat      
So,
Vielen Dank für die Hilfe. Ich habe mich dem Problem jetzt in Python angenommen. Dies stellte sich als relativ einfach heraus.

Jetzt weigert sich nur noch mein ANSYS den erstellten Code zu fressen, da der Umfang offensichtlich seine Möglichkeiten sprengt Laughing

Trotzdem nochmals vielen Dank für die schnellen Antworten.

Schönen Abend noch
Viele Grüße
Mino
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.502
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 17.08.2017, 20:12     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich habe mich dem Problem jetzt in Python angenommen. Dies stellte sich als relativ einfach heraus.

Ich würde sagen, dass es auch in MATLAB nicht schwer ist. Du brauchtest ja nur noch eine Schleife um meine Codeschnipsel zu basteln.

Grüße,
Harald
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.