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

for Schleife, Dateinamen ändern

 

Student_1515
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2013, 15:40     Titel: for Schleife, Dateinamen ändern
  Antworten mit Zitat      
Hi,
ich möchte in einer for Schleife Daten einlesen.
Wie kann ich den Path ändern und so die unterschiedlichen Dateien einlesen?

input = dlmread('C:\Temp\Name_.txt');

Die Dateien lauten Name_50, Name_100, Name_150 usw.
Danke
Private Nachricht senden Benutzer-Profile anzeigen


Headbucket
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 03.12.13
Wohnort: Dresden
Version: R2007B
     Beitrag Verfasst am: 19.12.2013, 16:06     Titel:
  Antworten mit Zitat      
Hallo,

das Zauberwort ist eval
Code:
Anzahl = 5; %Anzahl der Dateien
dir = 'C:\Temp\';
for i=1:Anzahl
    eval(['name = ''Name_' [int2str(50*i)] '.txt''']);
    input(i) = dlmread([dir name]);
end


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

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 19.12.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2013, 16:12     Titel:
  Antworten mit Zitat      
Besten Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.12.2013, 16:14     Titel:
  Antworten mit Zitat      
Hallo

EVAL ist hier gar nicht nötig, und überhaupt sollte vermieden werden.

Code:
Anzahl = 5; % Anzahl der Dateien
dir = 'C:\Temp\';
for i=1:Anzahl
    name   = sprintf('Name_%d.txt', 50 * i);
    input(i) = dlmread(fullfile(dir, name));
end



oder:
Code:

Anzahl = 5; % Anzahl der Dateien
dir = 'C:\Temp\';
for i=1:Anzahl
    name   = ['Name_', num2str(50 * i) ,'.txt'];
    input(i) = dlmread(fullfile(dir, name));
end

 


Zuletzt bearbeitet von denny am 19.12.2013, 16:36, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Headbucket
Forum-Anfänger

Forum-Anfänger


Beiträge: 34
Anmeldedatum: 03.12.13
Wohnort: Dresden
Version: R2007B
     Beitrag Verfasst am: 19.12.2013, 16:30     Titel:
  Antworten mit Zitat      
Hm. So gehts natürlich auch.
Ist auf jeden fall die einfachere/sauberere Methode.

Trotzdem eine Frage: Wieso sollte man eval vermeiden? Ich habe es schon ab und zu benötigt und bei überschaubaren Schleifenläufen konnte ich absolut keine Performance-Einbrüche feststellen. Ist doch eigentlich eine feine Sache sich die Anweisung "zusammenzubasteln".

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 19.12.2013, 16:41     Titel:
  Antworten mit Zitat      
Hallo

es nicht debuggbar und schwer lesbar und einfach sehr Fehler anfällig.
für mehr kannst SuFu des Forums nutzen, Jan hat hier schon unzählige Male erklärt warum.
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.