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

Bestimmte Werte in .txt Datei überschreiben

 

davidarmstrong85
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2013, 12:44     Titel: Bestimmte Werte in .txt Datei überschreiben
  Antworten mit Zitat      
Hi, mein Problem ist folgendes:

Ich lese über eine Gui Daten ein, die ich danach an einer bestimmten Stelle in einer .txt Datei schreiben will. Die Stelle ist wichtig, da ein anderes Programm auf diese Datei dann zugreift und mit den Werten weiterarbeitet.

Wie könnte ich das gut lösen?

Aus der Datei lesen und in sie schreiben funktioniert bereits. Auch die Dateneingabe über die Gui. Was halt jetzt fehlt ist die neuen Daten an der richtigen Position zu (über)schreiben.

Schon mal Danke!
Private Nachricht senden Benutzer-Profile anzeigen


Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 28.04.2013, 14:30     Titel:
  Antworten mit Zitat      
zeig mal her was du hast...
"Überschreiben" ist oft komplizierter als es den Anschein hat - vielleicht ist es einfacher, die alte Datei zu lesen und in eine neue zu schreiben.
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
davidarmstrong85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2013, 17:14     Titel:
  Antworten mit Zitat      
hi, also in der datei stehen verschiedene werte drin, die von einem anderen programm benötigt werden.

beispielsweise
12.7 13 47
!
!
!
!
1 2 3
4 5 6
7 8 9
!
!
!
!
0.0001 12

Und mein Ziel ist es jetzt, den Block mit 1 2 3 4 5… zu ersetzen mit den Werten die in der GUI eingegeben wurden.

Kannst du dir mein Problem so besser vorstellen?

Wie würde dein Vorschlag mit dem einlesen funktionieren?
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 28.04.2013, 19:22     Titel: Re: Bestimmte Werte in .txt Datei überschreiben
  Antworten mit Zitat      
ich meinte mit "zeig mal her was du hast..." deinen code Very Happy

davidarmstrong85 hat Folgendes geschrieben:
Aus der Datei lesen ... funktioniert bereits.

_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2013, 19:36     Titel:
  Antworten mit Zitat      
achso Very Happy ja,das hatte ich bisher nur testweise über

text=textread('test.txt','%s','whiespace','','delimiter','\t');

gemacht

in textread steht dann der gesamte dateiinhalt. wobei jede zeile mit ' anfängt und mit ' aufhört, da es ja strings sind,soweit ich weiß.
 
davidarmstrong85
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2013, 19:58     Titel:
  Antworten mit Zitat      
bzw. nein, habe es jetzt geändert, da ich gelesen hab textread sei veraltet.
fid_don=fopen('data/test.txt','r+');
C = textscan(fid_don, '%s %s %s\t\n');

fclose(fid_don);

also C ist ja jetzt ein cell array in dem alles drinne steht. wie printe ich das jetzt wieder in die datei? fprintf funktioniert mit cell arrays ja nicht.

und noch eine andere frage, wie oben in meinem beispiel zu sehen steht ja nicht in jeder zeile das gleiche(also nicht in jeder zeile steht text oder gleiche anzahl an zahlen). wie mach ich das am besten? habe jetzt 3 mal %s genommen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.04.2013, 21:32     Titel:
  Antworten mit Zitat      
habe jetzt

data_read = textscan(id, '%s %s %s %s %s %s\t\n');

wenn ich mir das auf m bildschirm ausgeben lasse,kann ich ablesen welche elemente geändert werden müssen.

daraus habe ich dann das hier geschlossen:

for i=17;1;29;
data_read{1}{i}=pitch(i,2);
data_read{2}{i}=pitch(i,3);
end
pitch ist ein array in dem die neuen daten stehen.

soweit so gut, kommt auch keine fehlermeldung.

aber wie kriege ich das dann in ne datei? fprintf geht ja leider nicht.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 29.04.2013, 01:23     Titel:
  Antworten mit Zitat      
Hallo,

Wieso geht FPRINTF nicht? Hast Du einen Code damit versucht und eine Fehlermeldung erhalten? Dann wäre es eine gute Idee, beides hier zu posten und nach einem Verbesserungsvorschlag zu fragen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 24.04.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 12:58     Titel:
  Antworten mit Zitat      
also fprintf ist ja eigentlich nicht für cell arrays gedacht.

aber etwas viel wichtigeres, meine datei hat ja nicht in jeder zeile gleich viel stehen und mal strings und mal daten, wie lese ich die datei am besten ein?
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 29.04.2013, 23:29     Titel:
  Antworten mit Zitat      
am Anfang war der String Wink
Wenn dir das Cellarray nicht gefällt, bleibt ja immernoch der string-stream... mehr kenne ich leider nicht.

brauchst du überhaupt eine Auswertung der alten Daten? Würde "str2num" dir was helfen? Oder der Matlabassistent zum Einlesen der Daten?

kannst du nicht einfach die betreffende Zeile/cellarray suchen, editieren und alles wieder speichern?
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
davidarmstrong

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.04.2013, 23:42     Titel:
  Antworten mit Zitat      
hi, also ich habe das problem soweit gelöst.

nutze jetzt textscan und lese das file zeilenweise in eine variable und editier das dann(übergebe ein array und wandle das mit num2str um).

das einzige problem was ich jetzt habe:

in einer zeile steht z.b. abc 10.1 40 1.000 30

ich will davon aber nur 10.1 ändern. meine überlegung war ich mache daraus zwei strings,also abc und den rest,was ja dann so aussieht cell{11}=['abc',rest]

das problem dabei ist, zwischen abc und rest ist dann kein leerzeichen oder so.
mache ich es so: ['abc',' ',rest] ist der abstand der werte die in rest stehen zu groß und das programm, dass auf die werte zugreift kommt damit nicht mehr klar.

jemand eine idee?
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 30.04.2013, 18:21     Titel:
  Antworten mit Zitat      
mach mal ein zwei Beispiele mit Vorher/Nachher deiner Strings. Das klingt recht verworren.
Vielleicht hilft es zu wissen, dass man strings wie C-Chararrays auch per Index ansprechen kann? str(2) wäre dann das zweite Zeichen von str
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
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.