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

Variablenbezeichnung suchen mit Wildcard

 

Prinz William

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2010, 09:43     Titel: Variablenbezeichnung suchen mit Wildcard
  Antworten mit Zitat      
Hallo zusammen,

ich möchte mir ein kleines Hilfsprogramm schreiben, dass mir das Umbenennen von Variablennamen vereinfacht. Hintergrund ist, dass ich ein paar Simulink-Simulationen laufen lasse, die Variablen in den Workspace zurückschreiben. Um die Daten vor der nächsten Simulation zu sichern, benne ich diese um. Zum Beispiel:
Code:

sim('Sim.mdl'); % Sim erstellt mit ToWorkspace die Variable erg
erg1_a = erg1;
erg2_a = erg2;
erg3_a = erg3;
erg4_a = erg4;
erg5_a = erg5;

sim('Sim.mdl');

 

Nun kann man das bestimmt auch Script-gesteuert machen. Ich stelle mir so etwas vor.
Code:

sim('Sim.mdl');
rename(erg,a)
sim('Sim.mdl');
 

Die Funktion "rename" sucht dann alle Variablen mit "erg" und hängt den Suffix "_a" dran.

Also suche ich eine Möglichkeit alle die Variablen im Workspace zu finden, die mit einer bestimmenten Zeichenfolge beginnen.
Den Wildcard - Operator erkennt "find" nicht. Gibt's da noch ne andere Möglichkeit?

Viele Grüße
Will.i.am.


Lord nibbler

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2010, 09:57     Titel:
  Antworten mit Zitat      
Hallo Prinz William,
speicher deine Simulationsergebnisse doch einfach in einen struct:
Code:

for i = 1:10
sim('Sim.mdl');
alle_ergebnisse(i).erg = erg;
end
 

oder in ein struct
Code:

for i = 1:10
sim('Sim.mdl');
alle_ergebnisse{i} = erg;
end
 

Gruß Lord nibbler
 
Prinz Harry

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2010, 09:59     Titel:
  Antworten mit Zitat      
Bruder, Smile

warum bennenst du die um?
Speichere sie doch einfach, wo sie dann nicht
überschrieben werden können. help save
 
Prinz William

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2010, 10:09     Titel:
  Antworten mit Zitat      
Harry, Du auch hier? Hol doch schon mal den Wagen...

Ja das Umspeichern in eine Struktur ist natürlich auch möglich. Daran hab ich nicht gedacht. Aber ...

Strukturen sind ne super Sache. Jedoch wird der Variablenname immer länger. Für die Lesbarkeit wirds dann schwieriger. Zumal ich die Simulink-Ergebnisse ja schon in einer Struktur habe.
ein Plot Befehl sieht dann so aus.
Code:

plot(erg.time,erg.signals.values);
 


Ich habe mir gedacht, dass dann einfach so zu machen
Code:

plot(erg_a.time,erg_a.signals.values);
 

mit der Struktur siehts dann so aus.
Code:

plot(a(1).erg.time,a(1).erg.signals.values);
 


ok. Geht auch ... Ist aber nicht hübsch (hört sich weibisch an, ich weiss)


Ich habe mir nur gedacht, dass ich dieses Umbenennen relativ häufig mache. Und ich das irgendwie per Skript abkürzen könnte.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.11.2010, 03:15     Titel:
  Antworten mit Zitat      
Hallo Prinz William,

Zitat:
Ich habe mir nur gedacht, dass ich dieses Umbenennen relativ häufig mache. Und ich das irgendwie per Skript abkürzen könnte.

Es ist kompliziert, die Variablen zunächst automatisch umzubenennen, nur um dann später wieder komplizierte Methoden zu benutzen, um wieder darauf zugreifen zu können.
Die Idee die Variablen in ein Struct-Array zu schreiben hat einen bestechenden Vorteil: Wenn Du später das Programm erweitern möchtest, z.B. auf 1.000.000 Durchläufe, ist das mit einem Struct-Array trivial! Bei automatischen Namens-Änderungen hättest Du aber den WorkSpace dermassen mit dynamisch erzeugten Variablen zugekleistert, dass Matlab Stunden brauchen wird, um auch nur einen Tastendruck zu erkennen.

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.