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

Schleife korrekt

 

Platin
Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.08.2010, 20:03     Titel: Schleife korrekt
  Antworten mit Zitat      
Hey Leute,

mein Problem ist das ich Matlab nur auf Arbeit nutzen kann und deshalb mir zu hause immer überlege wie ich bestimmte dinge auf arbeit am nächsten tag schneller erledigen könnte.
Ich habe nun ein Teilproblem und habe mir gedacht folgende schleife dafür zu benutzen kann aber leider nicht testen ob die so korrekt ist.
Was sagt iht dazu, seht ihr fehler? Bin keine Matlab-Experte !
also mein Problem ist folgendes:
Ich habe viele Ordner und möchte aus jedem Ordner eine bestimmte txt datei auslesen.
Mein erstes Problem was sich stellt ist das ich erstmal alle Ordner einlesen muss und dann eine variable brauche in der die namen der ordner aufgeführt ist. Das brauche ich später für ne schleife(denke ich).
Aber das problem ist das in dem hauptordner nicht nur die ordner enthalten sind sondern auch alle möglichen andere dateien, so das ich sozusagen sortieren muss um nur die Ordner zu bekommen.
Ich habe mir das so gedacht:

clear all
ordner='Pfad' % hier liegen meine daten
list_1=dir('ordner') % das ist der teil wo nur ordner in list_2 sollen
anzahl=lenght(list_1)
for ii=1:1:anzahl
if list_1.isdir(ii;1)=true
list_2=list_1(ii;1)
else continue
end
end % ende des teils
name={list_2.name}
anzahl_2=length(name)
for j=1:1:anzahl_2
M(:,:,j)=dlmread(fullfile(ordner,name{j},*asd,' ',1,0) % liest aus jedem Ordner die benötigte txt
end

List_2 soll meine Variable sein die nur die ordner enthält und nich noch die anderen dateien.
Ab name={list_2.name} geht mein restliches Skript weiter, um die gewünschte txt Dateien der Ordner einzulesen.
Die gewünschte txt beginn als einizge immer mit "asd", deswegen dachte ich mir das ich das noch irgendwie in den namen mit dem sternchen reinkriege, weiß aber nicht ob das so geht?
ist das so korrekt ?

MfG[/b]
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: 03.08.2010, 01:23     Titel: Re: Schleife korrekt
  Antworten mit Zitat      
Hallo Platin,

Der Code hat ein paar Bugs und das mit dem *asd wird mir nicht klar.

Platin hat Folgendes geschrieben:
Code:

clear all
ordner='Pfad' % hier liegen meine daten
list_1=dir('ordner') % das ist der teil wo nur ordner in list_2 sollen
 

Du meinst wahrscheinlich: "dir(ordner)"

Platin hat Folgendes geschrieben:
Code:

anzahl=lenght(list_1)
for ii=1:1:anzahl
   if list_1.isdir(ii;1)=true
      list_2=list_1(ii;1)
      else continue
      end
      end  % ende des teils
name={list_2.name}
 

Das überschreibt die Variable "list_2" bei jedem Aufruf, statt sie zu verlängern. "list_1(ii; 1)" ist keine valide Matlab Syntax. Ich vermute, Du meinst "list(ii, 1)". Einfach wäre aber die ganze Schleife zu ersetzen:
Code:
name = {list_1([list1.isdir]).name};

Allerdings hast du dann noch '.' und '..' in der Liste.

Platin hat Folgendes geschrieben:
Code:

M(:,:,j)=dlmread(fullfile(ordner,name{j},*asd,' ',1,0) % liest aus
 

Das verstehe ich nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.08.2010, 09:10     Titel:
  Antworten mit Zitat      
Hey jan,

danke für deine Antwort.
Naja meine Idee war es das er als erstes alle dateien einzeln checkt.
also guckt, ist list dir=true oder false ? wenn true handelt es sich um einen ordner und der soll diesen Ordner in list_2 speichern, wenn nicht fortfahren, so das ich zum schluss in list_2 nur die Ordner mit den Ergebnissen habe.
Dann soll er ja in jeden diesen Ordner gehen und mir meine gewünschte txt datein in meine 3-dimensionale Matrix M schreiben. Ich wollte also das er in Ordner 1 geht sich über dlmread ab der 1.Zeile und der 0.Spalte die *asx-Datei kopiert und dann zum nächsten ordner geht. also in ordner 2 und sich da dann wieder die *asx datei kopiert usw.
So das meine Matrix M zum schluss die *asx...txt datei aus jedem einzelnen ordner enthält.
Das wollte ich eben mit dm befehl dlmread(fullfile....) machen. Geht das so nicht?

MfG
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.