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

dynamische Variable + cell in .txt schreiben

 

mmaa
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.07.2011, 12:34     Titel: dynamische Variable + cell in .txt schreiben
  Antworten mit Zitat      
Hallo liebe MatLab Gemeinde.
Im Rahmen einer Studienarbeit möchte ich einen Optimierungsalgorithmus entwickeln.
Dazu benötige ich ein Programm, welches eine Datei einliest und bestimmte Werte manipuliert. Das funktioniert soweit auch ganz gut:

Code:
a=importdata('test.txt');
a{21}=['v=' num2str(27.8) ','];
a{22}=['x=' num2str(24.5) ','];
a{23}=['y=' num2str(15.5) ','];
a{24}=['z=' num2str(19) ','];
a{26}=['r1=' num2str(3) ','];
a{27}=['r2=' num2str(3) ','];


Allerdings soll dieser cell (!) array als .txt abgespeichert werden. Genau hier liegt mein Problem Sad könnt ihr mir einen befehl nennen, mit dem ich den vektor abspeichern kann?

desweiteren benötige ich dynamische variablen bzw dynaische Namen der .txt, sodass eine vergleichbarkeit "vorher - nachher" möglich ist.
dazu habe ich "eval" gefunden, konnte es bei mir allerdings nicht zum laufen bekommen :-/

vielen Dank im vorraus

mmaa
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.07.2011, 23:55     Titel: Re: dynamische Variable + cell in .txt schreiben
  Antworten mit Zitat      
Hallo mmaa,

Code:
a{21}=['v=' num2str(27.8) ','];

NUM2STR ist nicht notwendig hier:
Code:
a{21}=['v=27.8,'];

Einen Cell String kann man so in ein ASCII-File schreiben:
Code:
fid = fopen('FileName', 'w');
if fid < 0, error('Cannot open file'); end
fprintf('%s', a{:});
fclose(fid);


Zitat:
desweiteren benötige ich dynamische variablen bzw dynaische Namen der .txt, sodass eine vergleichbarkeit "vorher - nachher" möglich ist.

Was meinst Du genau damit?
Es hört sich so an, als wäre es viel einfacher gleich eine Funktion zu schreiben, z.B.:
Code:
v = 27.8;
x = 24.5;
y = 15.5;
z = 19;
r1 = 3;
r2 = 3;

Oder Du kann die Daten als Felder eines Structs speichern und ihn per SAVE und LOAD auf die Festplatte speichern und wieder laden.

Mit EVAL und solchen Text-File-Verrenkungen kann man sich das Programmieren zwar auch beliebig kompliziert machen. Davon rate ich aber ausdrücklich ab. Du kannst in diesem Forum ein paar hundert Threads zum Thema "Probleme mit EVAL" finden.

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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 31.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.08.2011, 12:10     Titel:
  Antworten mit Zitat      
ich habe eine .txt, wo z.B.

Code:
! Beginn
   Finish,
   /CLEAR,START,
   /Title,Studienarbeit
   /FILNAME,Original
! Arbeitsordner
   /MKDIR,M:\Desktop\Studienarbeit\Berechnung\
   /CWD,M:\Desktop\Studienarbeit\Berechnung\
! PreProzess
   /PREP7  
   /UNITS,SI            
   *AFUN,DEG            
! Materialeigenschaften
   ET,1,SOLID187
   MP,EX,1,210e9,            
   MP,PRXY,1,0.3,            
   MP,PRYZ,1,0.3,
   MP,PRXZ,1,0.3,
   MP,DENS,1,7850,            
! Winkel
v=27.8
x=24.5
y=15.5
z=19
! Radien
r1=3
r2=3


drinsteht.

die datei wird mit
Code:
eingelesen und mit

Code:
a{21}=['v=27.8'];
a{22}=['x=24.5'];
a{23}=['y=15.5'];
a{24}=['z=19'];
a{26}=['r1=3'];
a{27}=['r2=3'];
werden, die angegebenen Zeilen verändert.

abschließend soll die variable fortlaufend abgespeichert werden.

mit
Code:
fid=fopen('test.txt','w');
fprintf(fid, '%s \r\n', a{:});
fclose(fid);
klappt das abspeichern schon ganz gut. allerdings halt nur in die vorherige datei. die alte datei muss jedoch bestehen bleiben, da auf diese in späteren schritten noch zugegriffen werden muss.

ich benötige also eine funktion, die den dateinamen der .txt fortlaufend (meinetwegen mit variable i) ergänzt.

ich hoffe ihr versteht mein problem nun besser.

lg
Private Nachricht senden Benutzer-Profile anzeigen
 
BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 01.08.2011, 12:31     Titel:
  Antworten mit Zitat      
Hallo mmaa

Du kannst statt dem String 'test.txt'
eine Variable mit dem gewünschten String angeben, hier filename, diesen kannst du dir zusammenbasteln wie du willst,
Code:

for i = 1:...
filename =[oldfilename num2str(i) '.txt'];
fid=fopen(filename,'w');
fprintf(fid, '%s \r\n', a{:});
fclose(fid);
end
 


Code:

for i = 1:...
fid=fopen(['test' num2str(i) '.txt' ],'w');
fprintf(fid, '%s \r\n', a{:});
fclose(fid);
end;

 


Gruß Chris
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.