Matroids Matheplanet Forum Index
Moderiert von mire2
Mathematische Software & Apps » Matlab » Dateiendung ändern
Autor
Universität/Hochschule Dateiendung ändern
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Themenstart: 2014-07-10

hello people, ich habe eine datei mit der endung .in (beispiel.in) und möchte den text in der datei editieren. dafür muss das format von fopen erkannt werden. für die fopen(beispiel.in) ergibt -1. wie kann ich die in .txt ändern und anschließen wieder zurück in .in. danke:) tryer


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.1, eingetragen 2014-07-10

Hallo tryer, versuche mal folgendes (unter Windows) \sourceon Matlab ! Ren "beispiel.in" beispiel.txt \sourceoff Hinweis: Durch das Ausrufezeichen werden die nachfolgenden Befehle wie in der cmd.exe ausgeführt Gruß


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.2, vom Themenstarter, eingetragen 2014-07-10

\quoteon(2014-07-10 13:04 - majoka in Beitrag No. 1) Hallo tryer, versuche mal folgendes (unter Windows) \sourceon Matlab ! Ren "beispiel.in" beispiel.txt \sourceoff Hinweis: Durch das Ausrufezeichen werden die nachfolgenden Befehle wie in der cmd.exe ausgeführt Gruß \quoteoff perfekt, ja damit geht es, allerdings ohne anführungszeichen ! Ren beispiel.in beispiel.txt danke und bis bald, fragen werden sicher kommen :)


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.3, vom Themenstarter, eingetragen 2014-07-11

hello leute, majoka :) wenn ich nun die datei test.txt in matlab bearbeite in matlab und danach diese umbennen will mit ' !ren test.txt test1.txt, bekomme ich die meldung: Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. dern andere prozess wird wohl matlab sein. mit welchem befehl kann man die datei in matlab "freigeben"? besten dank :) tryer


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.4, eingetragen 2014-07-11

Probier es mal mit dem "fclose"-Befehl. Ist jetzt aber eher geraten, weil nicht klar ist was Du genau in welcher Reihenfolge machst.


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.5, vom Themenstarter, eingetragen 2014-07-11

\quoteon(2014-07-11 12:32 - majoka in Beitrag No. 4) Probier es mal mit dem "fclose"-Befehl. Ist jetzt aber eher geraten, weil nicht klar ist was Du genau in welcher Reihenfolge machst. \quoteoff fclose hat leider nicht geholfen... for i = 0.60:0.1:0.90 ! ren test.in# test.txt fid = fopen('test','r+'); fid2=fopen('mod.txt', 'wt'); while 1 line = fgetl(fid); k=strfind(line, 'UFL='); if ischar(line) if(strfind(line,'UFL=')) lineTemp = strread(line,'%s'); modline=strrep(line,lineTemp{1},['UFL=' num2str(i) ',']); fprintf(fid2, '%s\n', modline); else fprintf(fid2, '%s\n', line); end end if line == -1 break; end end ! ren mod.txt test.in# end


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.6, vom Themenstarter, eingetragen 2014-07-11

fclose('all')


   Profil
gaussmath
Senior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.06.2007
Mitteilungen: 9044
Wohnort: Hannover
  Beitrag No.7, eingetragen 2014-07-11

Dumme Frage: Hast du es mal mit \sourceon Matlab [file] = fopen('sofc_complete.in') \sourceoff probiert? Unter Octave funktioniert das... Ich habe die Datei aus deinem anderen Thread genommen.


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.8, eingetragen 2014-07-11

@gaussmath: Ich habe die Daten aus dem anderen Thread markiert und dann in einen Texteditor kopiert. Anschließend unter *.in abgespeichert. Mit dieser Vorgehensweise konnte ich die Daten in Matlab einlesen. Falls ich tryer richtig verstanden habe, geht das aber nicht mit seinen *.in Dateien, die von seiner SW generiert werden.


   Profil
gaussmath
Senior Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 16.06.2007
Mitteilungen: 9044
Wohnort: Hannover
  Beitrag No.9, eingetragen 2014-07-11

Also ich habe die Datei aus Dropbox (das "#" hinter "in" hatte ich noch entfernt) und nicht den Inhalt in einen Editor kopiert und dann gespeichert. :-?


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.10, eingetragen 2014-07-11

Hallo tryer, funktioniert es mit "flose('all')? Mir ist allerdings noch nicht ganz klar, was Du mit der For-Schleife bewirken möchtest. So wie ich es verstehe, werden die Datei in jedem Schleifenaufruf wieder überschrieben. D.h. nachdem Durchlauf existiert nur eine Datei mit UFL=0.9? ;-? Mit diesem Skript wird jeweils eine Datei für 0.6, 0.7, ... 0.9 angelegt (Voraussetzung: Es gibt im Ausgabeordner keine Dateien mit den entsprechenden Namen). \sourceon Matlab ! ren test.in test.txt count=1; for i = 0.60:0.1:0.90 fid = fopen('test.txt','r+'); fid2=fopen('mod.txt', 'wt'); while 1 line = fgetl(fid); k=strfind(line, 'UFL='); if ischar(line) if(strfind(line,'UFL=')) lineTemp = strread(line,'%s'); modline=strrep(line,lineTemp{1},['UFL=' num2str(i) ',']); fprintf(fid2, '%s\n', modline); else fprintf(fid2, '%s\n', line); end end if line == -1 break; end end fclose('all'); newfile=['test',num2str(count),'.in']; count=count+1 eval(['! ren mod.txt ', newfile]) %! ren mod.txt test.in# end \sourceoff [Die Antwort wurde nach Beitrag No.8 begonnen.]


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.11, eingetragen 2014-07-11

@gaussmath: Ich kann diese Seite nicht öffnen und muss daher auf die Aussage von tryer verlassen.


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.12, vom Themenstarter, eingetragen 2014-07-11

@gaussmath gar nicht so dumm die frage... könnte schwören, dass es beim ersten einlesen nicht geklappt hat. hab es eben wieder versucht, kann die .in# einlesen. @majoka ja, es klappt mit fclose('all') zum skript: das kript ist noch nicht vollständig. die *.in datei ist eine inputdatei für die andere software, deren aufruf auch in die schleife kommen wird. da in der software (ct) eine sensitivitätsanalyse nicht möglich ist, wird das mit matlab gemacht. in jeder schleife wird die *.in geändert und von ct als input angenommen. der nächste schritt ist nun in jeder schleife die ergebnisse aus der outputdatei (*.out) auszulesen und abzuspeichern. vielleicht da noch einige tipps ? danke leute :)


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.13, eingetragen 2014-07-11

Möchtest Du die Daten aus *.out einlesen und innerhalb von Matlab abspeichern? Ich kenne natürlich das Format der *.out-Dateien nicht. Vermutlich wird es aber wieder darauf hinauslaufen, die Informationen herauszulesen. Du kannst die Daten dann in ein Array schreiben und mit dem "save"-Befehl können die Daten im *.mat-Format abgespeichert werden.


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.14, vom Themenstarter, eingetragen 2014-07-14

oleeeeeee :D ja, genau das möchte ich machen. hab das übliche (dlmread, impordata, csvread...) zum einlesen mir angesehen und irgenwie werde ich nicht fündig. der ouput ist wie folgt: PIPE MEDIUM | MASS-FLOW MOLE-FLOW VOL-FLOW | PRESSURE NO TYPE | [kg/s] [kmol/s] [m3/s] | [bar] 1 GASMIX | 0.00156 0.00005 0.00085 | 1.0000 | 0.00085 | 1.0000 2 GASMIX | 0.00156 0.00005 0.00415 | 1.0000 | 0.00415 | 1.0000 3 GASMIX | 0.00178 0.00007 0.00927 | 1.0000 VOLTAGE/CELL = 0.8000 [V] CURRENT DENSITY = 3504.80 [A/m2] DC-POWER = 1.6748 [kW] AC-POWER = 1.5074 [kW] jetzt möchte ich den wert für massflow von pipe nr.1 und ac-power einlesen und speichern. müsste man da auch einzeln die zeilen einlesen? danke und gruß tryer


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.15, eingetragen 2014-07-14

Ich kenne keine andere Möglichkeit.


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.16, vom Themenstarter, eingetragen 2014-07-14

kanns tmir ein beispiel geben, wie du einen bestimmten wert in der jeweiligen zeile rauslesen würdest und diesen dann in einer tabbelle abspeicherst?


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.17, eingetragen 2014-07-14

Ich verstehe das Problem nicht. Du kannst doch die Zeilen genauso wie oben auslesen und dann anstatt in neues Textfile die Daten in ein Array schreiben. Danach kann dieses Array abgespeichert werden. \sourceon Matlab fid = fopen('tabelle.out','r+'); format long massflowarray=[]; acpowerarray=[]; while 1 line = fgetl(fid); if ischar(line) if(strfind(line,'1 GASMIX |')) lineTemp = strread(line,'%s'); massflowarray=[massflowarray str2num(lineTemp{4})]; end if(strfind(line,'AC-POWER')) lineTemp = strread(line,'%s'); acpowerarray=[acpowerarray str2num(lineTemp{3})]; end end if line == -1 break; end end save('Testdata2','massflowarray','acpowerarray') clear all load('Testdata2') massflowarray acpowerarray \sourceoff


   Profil
tryer
Ehemals Aktiv Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 08.07.2014
Mitteilungen: 28
  Beitrag No.18, vom Themenstarter, eingetragen 2014-07-14

danke danke, genau sowas brauche ich :) war gerade dabei mich in regexp einzulesen, womit es auch möglich wäre. aber das ist sowohl verständlicher als auch verständlicher :D beste grüße tryer


   Profil
Folgende Antworten hat der Fragensteller vermutlich noch nicht gesehen.
Er/sie war noch nicht wieder auf dem Matheplaneten
Zemos
Neu Letzter Besuch: vor mehr als 3 Monaten
Dabei seit: 31.01.2021
Mitteilungen: 1
  Beitrag No.19, eingetragen 2021-01-31

Hallo, ist es möglich den Befehl: !Ren "beispiel.in" "beispiel.txt auch so auszuführen, dass mehrere Dateien mit ihrer Endung geändert werden können? Ich bekomme es jetzt nur immer für eine Datei hin. Ich möchte den Befehl aber ungern 20 mal hinschreiben. Würde das Vorhaben in einer For-schleife umsetzbar sein? Also es gibt die Dateien "Beispiel1.in", "Beispiel2.in", "Beispiel3.in" usw. und ich möchte jetzt, dass die Dateien "Beispie1.txt", "Beispiel2.txt" "Besipiel3.txt" usw. heißen. Ich hoffe ihr könnt mir weiterhelfen. Beste Grüße Zemos


   Profil
majoka
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 25.02.2014
Mitteilungen: 810
  Beitrag No.20, eingetragen 2021-02-01

So werden alle Dateien mit der Endung "in" geändert: \sourceon Matlab / command prompt ! ren *.in *.txt \sourceoff


   Profil

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]