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 in bestehende Textdatei

 

swizz-john
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 27.05.2013, 22:55     Titel: Schreiben in bestehende Textdatei
  Antworten mit Zitat      
Rolling Eyes Hi Leute,

ist es möglich mit Matlab sukzessive Werte an eine bestehende Matrix in eine textdatei anzufügen??

Generell in eine textdatei schreiben geht ja mit dem dlmwrite Befehl:

dlmwrite('DistanzR101.txt',Euklidmatrix, 'newline','pc','delimiter', '\t', 'precision', 4);

aber wie bekomme ich es hin, dass er Werte geordnet zeilenweise anhängt?
Ist es auch möglich NUR die erste Spalte z.B. zu verlängern?

konret habe ich eine N*3 Matrix und würde diese gerne um einige zeilen ergänzen OHNE dabei jedoch die Formatierung zu verlieren.


1 2 2
2 2 10
3 6 2
4 6 10
.........
...
Ich bitte um Eure Hilfe,

Schöne Grüße, swizz-john
Private Nachricht senden Benutzer-Profile anzeigen


markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 27.05.2013, 23:06     Titel:
  Antworten mit Zitat      
Mit fopen die Datei öffnen, mit fseek ans Ende navigieren und mit fprinf/fwrite/whatever in die Datei schreiben im gewünschten format.
Geht bestimmt auch anders.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 28.05.2013, 19:56     Titel:
  Antworten mit Zitat      
Hi Markuman,

danke für deine Antwort!
hm iwie bekomme ich das nicht wirklich hin.
Also ein simples Beispiel.
Ich lade zunächst die Datei "Ergebnis.txt" . Diese existiert bereits.
Darin steht mal angenommen eine 3*3 Matrix.
Jetzt springe ich mit fseek in Spalte 3, und möchte da was ergänzen.
Leider schreibt er nicht an diese Stelle, sondern überschreibt die Datei
Ergebnis.txt nur mit einer 2. Sprich die ganze vorherige matrix ist weg und nur diese 2 ist in der Textdatei. Was mache ich falsch?

Code:
fid=fopen('Ergebnis.txt', 'w')
fseek(fid,3,'eof')
fwrite(fid, '2')
fclose(fid)


LG swizz-john
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 28.05.2013, 20:27     Titel:
  Antworten mit Zitat      
ich habs auf die schnelle mit octave getestet.

Code:


octave:14> clear all
octave:15> m=rand(3,3);
octave:16> csvwrite('Ergebnisse.txt',m);
octave:17> system('cat Ergebnisse.txt')
0.8336012739229993,0.5926438832361175,0.9050994311224559
0.1936911654229634,0.1484019714893287,0.7964947680906924
0.1908911661372673,0.5343883677255414,0.7141049282642139
ans = 0
octave:18> fid=fopen('Ergebnisse.txt', 'a+');
octave:19> neuewerte=rand(1,3);
octave:20> fprintf(fid,'%f,%f,%f\n',neuewerte(1), neuewerte(2), neuewerte(3));
octave:21> fclose(fid)
ans = 0
octave:22> system('cat Ergebnisse.txt')
0.8336012739229993,0.5926438832361175,0.9050994311224559
0.1936911654229634,0.1484019714893287,0.7964947680906924
0.1908911661372673,0.5343883677255414,0.7141049282642139
0.473558,0.576120,0.992061
ans = 0
octave:23>


 


Also fopen mit der Option 'a+' erledigt bereits das "an Ende der Datei springen". Also braucht man fseek doch nicht.
Mit fprintf einfach schreiben was du möchtest (Stellen nach dem Komma die geschrieben werden sollen festlegen etc). \n Am Ende für Zeilenumburch nicht vergessen.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 30.05.2013, 00:07     Titel:
  Antworten mit Zitat      
Hi Markuman,

besten dank soweit für deine Info.

Also das mit dem ans Ende der Datei springen funktioniert wunderbar!
Leider erkennt er meinen Zeilenumbruch nicht!

\n navigiert Matlab woh nicht in die nächste Zeile.

Er springt in die letzte Zeile der 3*3 matrix und setzt diese 3. Zeile einfach fort. keine reaktion auf zeilenumbrüche.

[code]fid=fopen('Ergebnis.txt', 'a+');
neuewerte=rand(1,3);
fprintf(fid,'%f,%f,%f\n',neuewerte(1), neuewerte(2), neuewerte(3));
fclose(fid)

Selbst wenn ich danach noch mal extra versuche nur einen Zeilenumbruch einzufügen:

[code]fid=fopen('Ergebnis.txt', 'a+');
neuewerte=rand(1,3);
fprintf(fid,'%f,%f,%f\n',neuewerte(1), neuewerte(2), neuewerte(3));
fclose(fid)

fid=fopen('Ergebnis.txt', 'a+');
fprintf \n
fclose(fid) [/code]

bekomme ich leider das gleiche ergebnis!
In Octave scheint es zu funktionieren , bei mir in Matlab leider nicht??^^

Die frage ist also , wie ist der ensprechende Befehl in Matlab ?

Schöne Grüße, swizz-john
Private Nachricht senden Benutzer-Profile anzeigen
 
markuman
Forum-Guru

Forum-Guru


Beiträge: 320
Anmeldedatum: 14.12.12
Wohnort: ---
Version: 2013a/2013b, Octave 3.6.4, 3.7.7
     Beitrag Verfasst am: 30.05.2013, 00:22     Titel:
  Antworten mit Zitat      
Jetzt hab ich Matlab gestartet und hatte sogar noch die Ergebnisse.txt in /tmp liegen Smile
Funktioniert auch bei mir in Matlab (R2012b) problemlos

Code:

>> cd /tmp
>> system('cat Ergebnisse.txt')
0.8336012739229993,0.5926438832361175,0.9050994311224559
0.1936911654229634,0.1484019714893287,0.7964947680906924
0.1908911661372673,0.5343883677255414,0.7141049282642139
0.473558,0.576120,0.992061

ans =

     0

>>  fid=fopen('Ergebnisse.txt', 'a+');
>> neuewerte=rand(1,3);
>>  fprintf(fid,'%f,%f,%f\n',neuewerte(1), neuewerte(2), neuewerte(3));
>> fclose(fid)

ans =

     0

>>  system('cat Ergebnisse.txt')
0.8336012739229993,0.5926438832361175,0.9050994311224559
0.1936911654229634,0.1484019714893287,0.7964947680906924
0.1908911661372673,0.5343883677255414,0.7141049282642139
0.473558,0.576120,0.992061
0.814724,0.905792,0.126987

ans =

     0

>>
 


Ich hab keine Idee mehr.
_________________

DIY OR DIE Cool

entropie=char(floor(94*rand(1, round(100.*rand)) + 32))
https://github.com/markuman
Private Nachricht senden Benutzer-Profile anzeigen
 
swizz-john
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 28.04.13
Wohnort: ---
Version: MatlabR2013b
     Beitrag Verfasst am: 30.05.2013, 00:32     Titel:
  Antworten mit Zitat      
Very Happy

Dank dir für deine Hilfe!! Ich kanns mir grad nicht erklären...
ich schau morgen nochmal drüber!

Soliden Gruß, swizz-john
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.