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

Probleme mit dir() [Directory listing]

 

Silenz
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2009, 12:42     Titel: Probleme mit dir() [Directory listing]
  Antworten mit Zitat      
Hallo, ich bin neu in diesem Forum. Finde es aber super dass sich hier Menschen gegenseitig helfen können.

Da komme ich auch gleich zu meinem Problem. Ich will über einen Netzlaufwerk auf einen Ordner zugreifen und mir über den Befehl dir() den Inhalt in einer Variable schreiben. Klingt eigentlich einfach, ist es auch.

Mein Problem: Ich habe bemerkt, dass der Befehl dir() nur etwa 1 Sekunde für das Bestimmen und Ausgeben des Inhaltes braucht. Aber merkwürdigerweise brauch der Befehl Variable=dir() fast das Zehnfache. Also 10 Sekunden!!!!! Shocked Shocked Muss man das verstehen? Beide Befehle machen doch eigenlich das selbe, nur dass ich halt einmal das Ergebniss in eine Variable reinschreibe anstatt es über die Konsole auszugeben!!
Ich bin momentan etwas Ratlos...10 Sekunden sind einfach viel zu lang. Damit kann ich die ganze Anwendung vergessen. Gibt es da einen Trick oder vielleicht eine andere Möglichkeit einen Ordnerinhalt sich abzurufen?


Vielen Dank und Grüße

Silenz
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 16.07.2009, 12:50     Titel:
  Antworten mit Zitat      
Moin,

der Befehl macht in beiden Fällen nicht das gleiche. Im ersten Fall (ohne Variable) liest er nur die Dateinamen. Im zweiten Fall liest er die Dateinamen und die Eigenschaften des Objektes (also von jedem Dateinamen) ein. Diese sind Änderungsdatum als Zeitstempel, Größe in Bytes, Ordner (ja/nein), Änderungsdatum als serial number. Damit werden im zweiten Fall viel mehr Informationen ausgelesen und gespeichert.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Silenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2009, 12:52     Titel:
  Antworten mit Zitat      
mir reichen ja die Dateinamen aus. Gibt es da keine Möglichkeit an diese schnell heranzukommen?

Danke und Grüße
Silenz
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 16.07.2009, 13:00     Titel:
  Antworten mit Zitat      
Moin,

guck mal wie lange das dauert:
Code:
T = textscan(evalc('dir(''deinOrdnerPfad'')'),'%s');


Gruß
Alex


/edit: Ich habe gerade gesehen, dass dies nur so lange funktionert, solange keine Leerzeichen in den Datei- oder Ordnernamen auftauchen.
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Silenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2009, 13:19     Titel:
  Antworten mit Zitat      
Hi,

WOW DANKE, damit liege ich sogar knapp unter 1sek.
Auf die Idee die Namen direkt aus der Konsole zu lesen bin ich nicht gekommen, bzw. wusste gar nicht das sowas geht.

Zwar werden die Dateinamen die so aussehen: 'Test - 2 - 3' getrennt abgespeichert, also

Test
2
3

und nicht Test - 2 - 3

aber das kriege ich schon hin.

Auf jedenfall Danke ich dir Vielmalls. Das ist eine sehr große Hilfe. Mein Programm kann ich Damit um einen faktor 10 beschleunigen.

Grüße

Silenz
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 16.07.2009, 13:47     Titel:
  Antworten mit Zitat      
Hallo,

ich würde statt eval-fkt system-fkt vorschlagen.


Code:

path2dir=pwd;
[flag, Daten] = system ( ['dir ' path2dir ' /B'] );
% du sollst noch delimiter setzen
% um leerzeichen in dateinamen zu ignorieren
Daten = textscan(Daten,'%s','delimiter','\n')
 
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 16.07.2009, 14:06     Titel:
  Antworten mit Zitat      
Silenz hat Folgendes geschrieben:
Zwar werden die Dateinamen die so aussehen: 'Test - 2 - 3' getrennt abgespeichert, also

Test
2
3

Siehe dazu mein edit oben...

@denny: Diese Möglichkeit ist auch schön... und stimmt, in textscan kann man auch die Delimiter angeben, das war mir in dem Fall entfallen Sad
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Silenz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 16.07.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2009, 15:09     Titel:
  Antworten mit Zitat      
Danke euch beiden, Beide Lösungen sind sehr gut

Ich habe jetzt die Lösung von Danny verwendet. Die Trennung der Dateinamen ist dei deiner Lösung etwas einfacher, da diese Zeilenweise ausgegeben werden. Ich benötige für den Abruf gerademal 0.9 sekunden. Gegenüber knappen 10sekunden ist das eine tolle steigerung.

Also Vielen Dank für eure Hilfe
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 - 2024 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.