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

Text in for-Schleife ändern

 

Peter123
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2012, 16:18     Titel: Text in for-Schleife ändern
  Antworten mit Zitat      
Servus,

ich habe ein hoffentlich einfaches Problem.
Ich habe ein Skript das Ergebnisse aus verschiedenen Ordnern laden soll.

Aber ich bekomme immer Fehler beim angeben der verschiedenen Pfade (hier unter "folders" eingegeben)


Code:

folders = [{'test\V1'}; {'testordner\V2'}; {'test\V3'}; {'V4'}];

for actx = 1:4    
       
     actsim = [folders([actx],:)];

     load(['C:\MATLAB Dateien\' [actsim] '\K_2.mat']);

     ...
end
 



Wenn alle Dateien den gleichen Pfad haben funktioniert es, sollange die Ordner Nummern gleich groß sind, wie hier:
Code:

folders = ['V1'; 'V2'; 'V3'; 'V4']
 


Heißt allerdings ein Ordner anderst, bekomm ich einen Fehler.
Für die unterschiedlichen Ordnerbezeichnungen hab ich die { } angefügt, dabei kommt allerdings der Fehler:

Error using load
Argument must contain a string.


kann mir dabei jemand weiterhelfen?
Private Nachricht senden Benutzer-Profile anzeigen


Ajax
Forum-Century

Forum-Century


Beiträge: 176
Anmeldedatum: 09.09.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2012, 16:43     Titel:
  Antworten mit Zitat      
Hallo,
versuch es mal mit char() und strcat().
Bei mir hat das geholfen.
mfg

Ajax
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2012, 18:09     Titel:
  Antworten mit Zitat      
hallo ajax,


Code:

folders = char([{'test\V1'}; {'test\V2'}; {'test\V3'}; {'V4'}]);
 


das funktioniert bei mir leider nicht.
mit char() führt das skript die ersten drei schleifen aus, bleibt dann aber beim öffnen der 'V4' hängen

" Error using load
Unable to read file C:\...V8\K_2.mat: No such file or directory.
"

Denk das könnte daran liegen das die kürzeren eingaben mit Leerzeichen aufgefüllt werden und das beim Laden dann nicht erkann wird.

(siehe MATLAB Help:)
To manipulate a body of text containing lines of different lengths, you have two choices—a padded character array or a cell array of strings. When creating a character array, you must make each row of the array the same length. (Pad the ends of the shorter rows with spaces.) The char function does this padding for you.

oder mach ich was falsch?

gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Peter123
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2012, 18:25     Titel:
  Antworten mit Zitat      
mit strcat() dachte ich wird das auffüllen mit Leerzeichen dann vermieden, aber es verändert für mich schienbar nichts.


Code:

folders = char([{'test\V1'}; {'test\V2'}; {'test\V3'}; {'V4'}]);

folders = strcat(folders);


for actx = 1:4    
       
     actsim = [folders([actx],:)];

     load(['C:\MATLAB Dateien\' [actsim] '\K_2.mat']);

     ...
end
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2012, 19:46     Titel:
  Antworten mit Zitat      
Hallo Peter,

Du gehst etwas großzügig mit Klammern um.
folders ist ein cell-Array. Auf den Inhalt einer cell
greift man mit geschweiften Klammern zu.
Mit runden Klammern bekommt man dagegen ein 1x1-cell,
die dann beim load nicht in einen String sondern wieder in
ein cell-Array verwandelt wird, mit dem load nicht das
anfängt, was Du willst.
Hier korrigiert:
Code:
folders = {'test\V1';'testordner\V2'; 'test\V3'; 'V4'};

for actx = 1:length(folders)
     actsim = folders{actx};

     load(['C:\MATLAB Dateien\' actsim '\K_2.mat']);

     ...
end


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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 06.11.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.11.2012, 20:15     Titel:
  Antworten mit Zitat      
hallo Sirius3,

Vielen Dank, klappt wunderbar!
bei dem ganzen rumprobieren hab ich wohl mehr zerstört als behoben Laughing
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.