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 als Variablenname nehmen

 

Matolab

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2013, 15:50     Titel: String als Variablenname nehmen
  Antworten mit Zitat      
Hallo liebe Community,

leider bin ich im Internet auf keine vergleichbare Frage zu meinem Problem gestoßen. Darum wende ich mich hier an Euch.

Nun beschreibe ich zuerst, was ich machen möchte:

Ich habe eine unbestimmte Anzahl an .txt Files, die ganz unterschiedliche Namen haben können (z.B. A1_01.txt oder Epsilon_13.txt) und jeweils Messdaten enthalten. Ich speichere den Text vor den Messdaten in eine _header 1x1 Cell und die Messdaten in eine _data 1x2 Cell.
Mein Problem ist nun das weiterrechnen mit den Werten in den soeben erstellen _data Zellen.

Code:

files = dir('*.txt');

for i=1:length(files) % length(files) = Anzahl files.txt
      k=0; % Zaehler
      j=0; % Variable fuer Nullabgleich
     
     
   while j==0,
       k=k+1;
       j=strcmp(files(i).name(k),'.'); % Abgleich filename mit Punkt zur Bennenung des arrays
   
   end
   
   file = fopen(files(i).name,'r'); %
   eval([files(i).name(1:k-1) '_header=textscan(file,''%s'',75);']) % String Array der ersten 75 Wörter angelegt
   fgetl(file); % advance the file pointer one line
   
   eval([files(i).name(1:k-1) '_data=textscan(file,''%n \t %n'');'])% \t macht einen tabsprung, da die Messwerte nebeneinander stehen und mit einem Tabsprung getrennt sind| es werden zwei Arrays  in der Cell angelegt, beide mit Double-Typ
   fclose(file);
   
 end;
 


Dieser Code erstellt dann im Workspace viele Zellen der _data und _header -Endungen und füllt sie mit den dazugehörigen Texten / Messwerten.

Nun zum Wesentlichen:
Ich suche nun eine Möglichkeit auf diese blabla_data (blabla = beliebige Namen) Zellen zuzugreifen.
Ich möchte nämlich auf die in der blabla_data {1,2} gespeicherten Messwerte zugreifen.

Praktisch so etwas wie in der Schleife verwendet mit {1,2} Anhang:

Code:

[files(i).name(1:k-1) '_data']{1,2}; % sollte mir den Namen der ersten _data Cell geben, auf diese zugreifen und die zweite Spalte davon nehmen.
 


Das, was ich hier probiert habe funktioniert aber nicht.

Ich möchte sozusagen automatisieren, dass wenn ich bestimmte .txt Dateien mit Messdaten habe, ohne sonstige weitere Eingaben tätigen zu müssen, auf diese zugegriffen werden kann.

Hat jemand eine Idee?

Mit freundlichen Grüßen,
Matolab


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.11.2013, 18:19     Titel:
  Antworten mit Zitat      
Hallo,

die Verwendung von dynamischen Variablennamen (und daraus resultierend eval, assignin u.ä.) führt zu mehr Problemen als Nutzen.

Ich würde dringend empfehlen, darauf zu verzichten.
Alternative wäre beispielsweise eine Struktur:
Code:
data(1).fname = dateiname;
data(1).headers = ueberschriften;
data(1).numdata = numerische_daten;
...


Grüße,
Harald
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.