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

schnelles Umbennen von Vektoren im Workspace

 

Matlab_User85
Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 03.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2014, 14:45     Titel: schnelles Umbennen von Vektoren im Workspace
  Antworten mit Zitat      
Hallo zusammen,

ich habe häufig wiederkehrende Vektoren mit dem gleichen Namen.

z.B.
Code:

Vektor1
Vektor2
Vektor3
Vektor4
Vektor5
Vektor6
Daten1
Daten2
Daten3
 


Für eine nachfolgende Verarbeitung müssen diese Vektoren immer nachträglich umbenannt werden. Beispielsweise soll das Datum angefügt werden. Dann ergibt sich:

z.B.
Code:

Vektor1__09122014
Vektor2__09122014
Vektor3__09122014
Vektor4__09122014
Vektor5__09122014
Vektor6__09122014
Daten1__09122014
Daten2__09122014
Daten3__09122014
 


Gibt es eine einfache Möglichkeit den String
Code:
__09122014

automatisch an alle Vektoren im Workspace anzuhängen?

Das würde natürlich wesentlich schneller gehen als von Hand Smile
Das aktuelle Datum ist nur ein Beispiel. Es können auch andere Zeichen notwendig sein.

Für eure Hilfe wäre ich sehr dankbar
Private Nachricht senden Benutzer-Profile anzeigen


Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2014, 15:17     Titel:
  Antworten mit Zitat      
mit dem Befehl eval geht das. Aber willst du das wirklich? Es erhöht nicht gerade die Übersichtlichkeit wenn man Werte (wie z.B. das Datum) in Variablennamen verwendet.

viele Grüße
Thomas
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: 11.12.2014, 01:16     Titel: Re: schnelles Umbennen von Vektoren im Workspace
  Antworten mit Zitat      
Hallo Matlab_User85,

Die Namen der Variablen gehören zum Programm. Das Datum gehört aber zu den Daten. Je stärker man Daten und Programm trennt, desto flexibeler wird der Code, und gleichzeitig leichter zu warten und zu debuggen.

Ich würde deshalb dringend empfehlen auch Variablen-Namen wie "Vektor1" zu vermeiden, wenn dabei ein Index in den Namen geschmuggelt wird. Besser ist es einen Index als Index zu verwenden, also ein Array zu benutzen.
Das Datum könnte dann z.B. als Feld in einem Struct gespeichert werden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Alex4456
Forum-Anfänger

Forum-Anfänger


Beiträge: 47
Anmeldedatum: 17.09.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.12.2014, 09:59     Titel:
  Antworten mit Zitat      
Hallo,

ich kann mich da nur anschließen.

und würde hier auch gleich mal ein Tipp geben, wie ich es momentan handhabe:
Code:

Daten = cell(DatenLänge,2);

Daten{1,1} = DatumVariable1;
Daten{1,2} = InhaltVariable1;
Daten{2,1} = DatumVariable2;
Daten{2,2} = InhaltVariable2;


du kannst dann immer noch die Daten sortieren und auswählen indem du
Code:

indexRichtigesDatum = find(DatumGesucht ==  [Daten{:,1}])


nutzt.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Matlab_User85
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 36
Anmeldedatum: 03.11.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2014, 14:22     Titel:
  Antworten mit Zitat      
Ich möchte nochmal auf das ursprüngliche Problem zurückkehren. Das Datum ist in meinem Fall nicht unbedingt notwendig. Vielmehr eine fortlaufende Nummerierung, die automatisch durchgeführt werden soll.

Im Zuge einer Messwertverarbeitung liegen mir csv-Dateien in einem normalen Windows-Ordner vor. Zum Beispiel:

Code:

Messung_1.csv
Messung_2.csv
Messung_3.csv
...
 


Zum Einlesen in Matlab habe ich ein Skript erstellt, welches mir die gewünschten Spalten der csv-Datei als Vektoren auf den Workspace platziert.

Dies muss ich zurzeit immer noch durch eine Kommandozeile von Hand zuweisen, z.B.:
Code:

[Strom1,Strom2,Strom3,Leistung1,Leistung2,Leistung3,...]=Einlesefunktion('Messung_1.csv',2,500);
 


Ich erhalte anschließend die dargestellten Variablen auf dem Workspace von der Datei Messung_1.csv.

Danach führe ich noch ein Skript aus, um die Vektoren meinen Bedürfnissen anzupassen (z.B. Vektoren zusammenführen, Einträge löschen,...). Das Skript arbeitet hierbei mit den stets wiederkehrenden Namen
Code:

Strom1,Strom2,Strom3,Leistung1,Leistung2,Leistung3,...
 


Anschließend muss ich noch von Hand die Endung mit '_1' oder '_2' oder einer anderen Zahl fortlaufend anpassen, weil sich ja für jeden Einlesevorgang der gleiche Variablenname durch die oben angegebene Zuweisung ergibt.

Wie kann ich den beschriebenen Einlesevorgang noch weiter verbessern?
Wäre es möglich alles soweit zusammenzufassen, um eine Funktion (Skript?) zu starten, welche mir anschließend alle angesprochenen Arbeitsschritte:
- Einlesen Messung_1.csv
- Bearbeiten Vektoren von Messung_1.csv
- Umbenennen Vektoren von Messung_1.csv
- Einlesen Messung_2.csv
- Bearbeiten Vektoren von Messung_2.csv
- Umbenennen Vektoren von Messung_2.csv
- ...

automatisch vornimmt?
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: 27.12.2014, 14:19     Titel:
  Antworten mit Zitat      
Hallo Matlab_User85,

Ist die Kernbotschaft angekommen?
Variablen-Namen sollten keine fortlaufenden Nummern enthalten. Einen Index in die Namen der Variablen zu schmuggeln macht Programme unflexibel, schwer erweiterbar und schlecht zu debuggen. Wenn Du stattdessen Felder verwendest, werden die Programme übersichtlicher und können ohne jede weitere Änderung auch mit 5718 Variablen umgehen.

Statt:
Code:
[Strom1,Strom2,Strom3,Leistung1,Leistung2,Leistung3,...]=Einlesefunktion('Messung_1.csv',2,500);

wäre es also besser eine "Einlesefunktion" zu erstellen, die "Strom" als {1x3} Cell-Array oder Vektor zurückgibt.

Das Thema wird mehrfach pro Woche besprochen. Suche nach "EVAL".

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.