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

Weiterverarbeitung von who? oder andere VAriante

 

dm0303
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2011, 12:25     Titel: Weiterverarbeitung von who? oder andere VAriante
  Antworten mit Zitat      
Hallo Zusammen,
ich steh vor einem Problem und seh den Wald vor lauter Bäumen wahrscheinlich nicht mehr.
Kurze Beschreibung:
Ich habe Variablen erzeugt, die alle mit Lysi beginnen und dann einen Zahlencode (Datum und Uhrzeit) enthalten. Es handelt sich dabei um Matrizen, die 13 Spalten und 1027 Zeilen haben. Im Workspace sind die ja nun alphabetisch sortiert. Diese Sortierung benötige ich, denn ich muss nun NACHEINANDER die 13. Spalte herauslesen und in eine neue Matrix speichern, diese muss natürlich so groß sein, so viele Lysi-Variablen vorhanden sind. Es existieren nun so viele Variablen mit diesen Namen, wie .txt Dateien vorhanden sind. Daher habe ich wie folgt prgrammiert

Code:
anzahl = dir('*.txt');
 
Rhowerte=zeros(1027,length(anzahl));
 
A=who('Lysi*');
 


A listet ja nun auch alle Variablen alphabetisch auf. Kann ich das irgendwie weiter verwenden? Muss ja jetzt eine Schleife erzeugen, in der ich die 13. Spalte einer jeden Variable nacheinander einlese. Aber wenn ich mir zum Bsp. A(1,1) ausgeben lass, kommt `Lysi1109210900‘ was mir ja nicht weiterhilft.
Ich komm da nich weiter, kann mir evtl. jemand helfen. Wäre echt toll

PS: Wünsch allen ein frohes Weihnachtsfest.
Private Nachricht senden Benutzer-Profile anzeigen


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 23.12.2011, 12:38     Titel:
  Antworten mit Zitat      
Hi,

als weiteren Schritt einfach mal ausprobieren

M=eval(A(1,1));

Da A(1,1) den Variablennamen als String enthält, wird M den Inhalt des Variablennamens haben, also die Matrix mit den 13 Spalten.

Ebenfalls frohes Fest
Andi
Private Nachricht senden Benutzer-Profile anzeigen
 
dm0303
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 23.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.12.2011, 12:58     Titel:
  Antworten mit Zitat      
Hi,

ja fast. ich musste es noch ma ändern. aber im grunde genommen, hats funktioniert.
ich ahbs jetzt wie folgt gelöst:

Code:

for i = 1:length(anzahl)
         hilf=A(i,1);
         hilf2=char(hilf);
         hilf3=eval(hilf2);
         Rhowerte(:,i)=hilf3(:,13);
         i=i+1;
end
 


es gibt sicherlich noch schönere varianten, aber es funktioniert.
Die Lösung war wirklich so einfach. Man stand ich aufm schlauch Laughing

danke
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: 25.12.2011, 17:53     Titel:
  Antworten mit Zitat      
Hallo dm0303,

Dies wäre kompakter:
Code:
for i = 1:length(anzahl)
         hilf3=eval(A{i,1});
         Rhowerte(:,i)=hilf3(:,13);
         % i=i+1;  % NEIN!
end

Das Ändern des Schleifenzählers "i" innerhalb der Schleife ist sinnfrei und verwirrt die Leser. Die Umwandlung eines einzelnen Cell-Strings in einen String funktioniert am effizientesten mit den geschweiften Klammern { und }.

Die Methode per EVAL auf Variablen zuzugreifen ist sehr Fehleranfällig und falls Probleme auftrten kann man sie nur schwer mit dem Debugger finden. Zudem wird Matlab von solchen dynamischen Variablenzugriffen heftig ausgebremst. Deshalb rate ich heftig davon ab. Bei Bedarf kannst Du hunderte Nachrichten von mir und anderen zu diesem Thema im Forum finden.

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.