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

String in m-File ersetzen

 

dommenicus
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 19.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2013, 17:32     Titel: String in m-File ersetzen
  Antworten mit Zitat      
Hallo, ich habe folgendes Problem:

ich möchte ein .m-File mit meinen Ergebnissen erstellen.
Soweit, so gut.
jetzt habe ich das Problem das ich die alten Ergebnisse einzeln durch neuere ersetzen möchte.
"Strrep" hilft mir hier nicht weiter da ich ja das alte Ergebnis nicht mehr weiß...
vereinfacht
Code:
%
...
x=[5 10 7];
...
neues ergebniss:
x1= [4.5 8 9.5]


Wie kann ich nun also nach dieser Zeile in meinem Strings suchen und idealerweise nur das Ergebnis ersetzen?
Der Befehl "regexprep" scheint in diese Richtung zu gehen nur finde ich da leider noch keine Lösung!
Vielen dank für eure Mühe im voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.11.2013, 22:54     Titel:
  Antworten mit Zitat      
Hallo dommenicus,
ich sehe da nirgends Strings, sondern nur Zahlen. Kannst Du nochmal versuchen zu erklären was Dein Ziel ist, und nicht wie Du denkst, dass Du es umsetzen möchtest.
Private Nachricht senden Benutzer-Profile anzeigen
 
dommenicus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 19.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2013, 09:53     Titel:
  Antworten mit Zitat      
Hallo,
das .m-File das ich erstellen/editieren möchte, schreibt meine Ergebnisse bisher als String darein.
deswegen lesen ich auch dieses .m.-File als String wieder aus...
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2013, 12:01     Titel:
  Antworten mit Zitat      
Wieso verwendest du nicht
Code:
? Das erstellt ein mat File für die Variablen die du speichern willst, dass du ganz einfach wieder laden kannst.
Private Nachricht senden Benutzer-Profile anzeigen
 
dommenicus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 19.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2013, 12:37     Titel:
  Antworten mit Zitat      
Danke für deine Antwort!
Die Idee mit dem mat-File ist zwar gut, jedoch benutzen die Programme, die danach die Auswertung der Ergebnisse übernehmen, alle diese .m-Files einer festen Form!
Private Nachricht senden Benutzer-Profile anzeigen
 
jurtsche
Forum-Century

Forum-Century


Beiträge: 123
Anmeldedatum: 26.03.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2013, 13:55     Titel:
  Antworten mit Zitat      
Dann würde ich ....

mat2str für die Variablen verwenden und den zusammengefügten String der herauskommt in eine irgendeinedatei.m speichern.

wenn du dann die variablen verwenden willst einfach mit
irgendeinedatei
in den Workspace einlesen, verändern und den String mit mat2str neu erzeugen und Datei überschreiben.
Private Nachricht senden Benutzer-Profile anzeigen
 
dommenicus
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 19.09.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2013, 14:15     Titel:
  Antworten mit Zitat      
@Sirius3
um nochmal zu versuchen es zu erklären...
ich möchte einen String editieren und in diesem String einen gewissen teil ersetzen.
Im prinzip bräuchte ich eine Funktion wie
Code:

strrep(meinString)
 

nur, dass ich in dem String,nachdem ich suche, eine Art Platzhaltervariable habe, nach welcher nicht gesucht wird.
in meinem Fall sollte er nach dem Variablennamen mit dem unbekannten Ergebnis suchen und dann den Variablennamen und das unbekannte Ergebnis mit einem neuen Variablennamen und dem neuen Ergebnis ersetzen.

ich hoffe du kannst halbwegs verstehen was ich meine!
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2013, 02:33     Titel:
  Antworten mit Zitat      
@dommenicus: Also wenn ich Dich richtig verstehe hast Du ein fertiges .m-File in dem an irgendeiner Stelle "variablename = wert" steht und Du willst "wert" durch irgendetwas anderes ersetzen. Dann weißt Du aber doch, dass Du nach "wert" suchst. Du kannst natürlich auch "wert" durch einen eindeutigen String ersetzen, z.B.: "{{ersetzung fuer Variablenname}}". Da die Datei nur als Template dient, muss das ja kein gültiges Matlab sein. Dann ist auch klar, dass die .m-Datei noch nicht vollständig ist.
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: 12.11.2013, 23:54     Titel: Re: String in m-File ersetzen
  Antworten mit Zitat      
Hallo dommenicus,

Daten sind wirklich viel besser in MAT-Files aufgehoben, anstatt sie mit komplizierten Methdoen in M-Files zu packen. Eine Vermischung aus Code und Daten ist grundsätzlich eine schlechte Idee, denn sie reduziert die Flexibilität und Wartbarkeit des Programms.
Ein MAT-File zu erzeuigen und per LOAD zu laden ist also bestimmt eine bessere Lösung als dynamisch ein M-File zu erstellen.

Aber wenn Du das so bei behalten möchtest, kann das so laufen:
Code:
Name = 'x1';
NewData = rand(1, 5);
Fmt = repmat('%g, ');
Fmt = Fmt(1:end-2);
NewDataStr = sprintf(Fmt, NewData);

Str = fileread('YourMFile.m');
CStr= regexp(Str, '\n', 'split');
Index = strncmp('CStr, [Name, '=']);
CStr{Index} = [Name, '= [', NewDataStr, ']'];
 

Und danach das File mit dem Inhalt von CStr überschreiben.

Das ist aber wegen des wiederholten Schreibens in ein File sehr ineffizient.

Gruß, Jan
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.