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

GUI_Mat_Files_Nach_Bestimmten_Namen_Inhalt_Suchen

 

JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2012, 10:19     Titel: GUI_Mat_Files_Nach_Bestimmten_Namen_Inhalt_Suchen
  Antworten mit Zitat      
Servus,

ich habe verschiedene Mess-Files (.mat)
die ich auslesen muss.
Ich habe schon ein Skript das mir Beispielsweise Alle in einem Ordner vorhandenen Files zusammenfässt und strukturiert und evtl noch werte berechnet/umgerechnet werden.
Aber was ich gerne haben möchte, ist ein Skript das mir die Matfiles nach einem bestimmten Inhalt im Namen sucht und die dann wie oben geschrieben auswertet usw.
Diesen Namen Inhalt möchte ich aber in der GUI eingeben.

1. gibt es einen befehl oder schreibweise die mir das ermöglicht?
2. wie kann ich das in GUI realisieren? bzw. wie kann ich beides dann verknüpfen ?


es soll so ablaufen:
1. einen string im GUI eingeben : 'xyz'
2. er findet alle mat files mit dem nameninhalt 'xyz'
3. die m.file soll mir dann all diese matfiles raussuchen und dann weiter bearbeiten.

ich verzweifle schon hab alles abgeklappert aber nichts passendes gefunden.

Danke im Voraus!!! Very Happy


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 13.09.2012, 11:10     Titel: Re: GUI_Mat_Files_Nach_Bestimmten_Namen_Inhalt_Suchen
  Antworten mit Zitat      
Hallo JaSoIstEs,

Vielleicht hilft dies:
Code:
key = 'xyz';
list = dir(fullfile(FilePath, ['*', key, '*.*]));

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2012, 12:24     Titel:
  Antworten mit Zitat      
Danke schön.
Funktioniert.
habe es schon so ähnlich aufgebaut wusste nur nicht wie ich das mit diesem "Schlüßelwort" machen soll.

Ok und hast du auch eine Idee wie ich das in die GUI einbinden kann mit einem edit text oder zumindest eine UI (sowas wie uigetdir) damit ich das nicht jedes mal in der m-file eingeben muss?

Gruß
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.09.2012, 13:11     Titel:
  Antworten mit Zitat      
Ok habs mit den check boxen hinbekommen.
Aber was ich komisch finde ist wenn ich die check box anklicke definiert er mir das schlüßel wort aber wenn ich das weg klicke würd ich gerne wollen dsa er das wieder raus löscht ist das möglich?

gibt das es aber die möglichkeit das mit edit text zu machen ? wäre glaube ich angenehmer weil sich die namen je nach messung auch ändern können und dann müßte ich es immer in der GUI ändern.

Sorry bin ein Neuling was GUI angeht
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.09.2012, 10:11     Titel:
  Antworten mit Zitat      
das Thema Checkboxen und das mit dem edit text hat sich erledigt.

aber kann man

Code:
key = 'xyz';
list = dir(fullfile(FilePath, ['*', key, '*.*]));


so mehrere "key" hinzufügen ? ich hab versucht einfach ein key2 noch einzufügen

Code:
key = 'xyz';
key2= 'zyx''
list = dir(fullfile(FilePath, ['*', key,key2, '*.*]));  



funktioniert aber leider nicht.

[EDITED, Jan, Bitte Code-Umgebung verwenden - danke!]
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.09.2012, 09:05     Titel:
  Antworten mit Zitat      
Hallo JaSoIstEs,

Dann schau Dir doch mal an, was Dein Code genau macht:
Code:
key = 'xyz';
key2= 'zyx''
list = dir(fullfile(FilePath, ['*', key,key2, '*.*]));

Nun sucht das Betriebssystem nach File, die zu "*xyzzyx*" passen. Aber es ist natürlich immer hilfreich, wenn Du hier postest, was Du versucht hast.
Code:
key1 = 'xyz';
key2= 'zyx''
list1 = dir(fullfile(FilePath, ['*', key1, '*.*]));
list2 = dir(fullfile(FilePath, ['*', key2, '*.*]));
list = cat(1, list1, list2);  % Oder cat(2) ? Bitte selbst ausprobieren
 

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 10:12     Titel:
  Antworten mit Zitat      
Hey Jan,
danke erst mal für deine antwort.
Habe es jetzt hier mit versucht:

Code:

key1 = 'xyz';
key2= 'zyx''
list1 = dir(fullfile(FilePath, ['*', key1, '*.*]));
list2 = dir(fullfile(FilePath, ['*', key2, '*.*]));
list = cat(1, list1, list2);


es funktioniert aber nicht wie ich es haben will.

Nochmal zur Erläuterung:
ich habe eine n-Anzahl an files die beispielsweise folgenden Namen tragen "xyz_blabla_zyx", "zyx_blabla" oder "xyz_blabla".

wenn ich das so mach wie der code oben dann pickt er mir folgende files raus : "xyz_blabla_zyx", "zyx_blabla" oder "xyz_blabla". Nämlich alle, die eines der beiden "key´s" enthalten

Ich will aber das er mir nur die Files raussucht wo beide "key´s" enthalten sind, d.h. in diesem Beispiel will ich nur "xyz_blabla_zyx" haben.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.09.2012, 11:31     Titel:
  Antworten mit Zitat      
Hallo JaSoIstEs,

Aha, jetzt wird es klarer.
Code:
key1 = 'xyz';
key2= 'zyx';
list = dir(fullfile(FilePath, ['*', key1, '*', key2, '*.*]));

Oder vielleicht:
Code:
list = dir(fullfile(FilePath, [key1, '*', key2, '.*]));


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 11:53     Titel:
  Antworten mit Zitat      
Hallo Jan,

leider funktioniert es mit keiner der beiden Moeglichkeiten Sad .

Bei diesen Moeglichkeiten findet er garnichts, weder etwas mit dem ersten Schluesselwort noch mit dem zweiten.
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 13:08     Titel:
  Antworten mit Zitat      
Servus Jan,

Code:

key1 = 'xyz';
key2= 'zyx''
list1 = dir(fullfile(FilePath, ['*', key1, '*.*']));
list2 = dir(fullfile(FilePath, ['*', key2, '*.*']));
list = cat(1, list1, list2);  
 


bei der möglichkeit von dir hat es ja einigermaßen funktioniert.
Wäre es möglich nach dem 1. Wort zu suchen, er findet alle files mit diesem namen und dann filtert er noch mal die files die er mit dem 1. namen gefunden hat nochmal nach dem 2. namen. Kann man das iwie realisieren?
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 17.09.2012, 14:19     Titel:
  Antworten mit Zitat      
Hallo JaSoIstEs,

Zitat:
Bei diesen Moeglichkeiten findet er garnichts, weder etwas mit dem ersten Schluesselwort noch mit dem zweiten.

Irgendwie reden wir aneinander vorbei.
Du suchst nach einem Pattern, welches solche Files erkennt: "xyz_blabla_zyx" - richtig?
Und nun soll statt "_blabla_" jeder beliebige String erkannt werden, oder?
Dann ist dies zielführend:
Code:
key1 = 'xyz';
key2= 'zyx';
list = dir(fullfile(FilePath, [key1, '*', key2.*']));

Wenn Du schreibst, dass dies nichts findet, gibt es keine entsprechenden Files im Ordner FilePath. Oder Du hast einen Tippfehler im Code. Oder Du hast nicht genau beschrieben, was Du eigentlich erreichen möchtest.

Ich kann mir nicht vorstellen, wie dieses Programm nur "einigermaßen" funktionieren könnte. Entweder es macht was es soll, oder eben nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 14:45     Titel:
  Antworten mit Zitat      
Sorry mit dem einigermaßen war das nicht so gemeint sondern das es annähernd tut was ich will.

Um aber jetzt konkreter zu den filenamen zu kommen.

(01)PGN_Michael_0Nm_1800Nm_GF_7.mat
(02)PGN_Michael_0Nm_-1800Nm_SKF_1_3.mat
(03)PGN_Ibrahim_0Nm_1800Nm_SKF_5_6.mat
(04)PGN_Michael_0Nm_1200Nm_Oval_19_22.mat
(05)PGN_Ibrahim_0Nm_1400Nm_Oval_19_22.mat
(06)PGN_Ibrahim_0Nm_-1400Nm_GF_Manöver13_16.mat

diese files sind in beispielsweise in einem ordner!
ich will jetzt sagen bitte suche mir die Files raus die, die folgendes '1800' und 'SKF' im namen enthalten. hier sollte er mir jetzt file 2 und 3 laden.
Wenn ich sage lade mir die files mit 'Michae' und '1800' dann soll er nur file 1 laden.

ich hoffe ich konnte jetzt verständlich machen was ich will.

gebe ich das ein:
Code:

key = 'Michael';
list = dir(fullfile(FilePath,['*',key,'*','*.*']))
 


ist es kein problem dann kriege ich alles was mit 'Michael' zu tun hat.

gebe ich das hier ein:
Code:

key = '1800';
key1 = 'SKF';
list = dir(fullfile(FilePath, [key, '*', key1,'*','*.*']));  
 


erkennt matlab keine files obwohl es files gibt die im namen '1800' und 'SKF' enthalten.


Danke für die Mühe. Ich hoffe ich konnte es jetzt besser erklären.
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 16:06     Titel:
  Antworten mit Zitat      
Ok ich habs.

Code:

list = dir(fullfile(FilePath,['*',key,'*','*',key1,'*','*.*']))
 


das ist die richtige schreibweise.
 
JaSoIstEs

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.09.2012, 16:29     Titel:
  Antworten mit Zitat      
Wenn der name so lautet 'a_b_c'

dann muss man auch nach dieser reihenfolge gehen.

also

a,c oder a,b oder b,c

und nicht

c,b oder c,a oder b,a

was ich ziemlich doof finde.


Danke dir noch mal Jan.
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 17.09.2012, 17:44     Titel:
  Antworten mit Zitat      
JaSoIstEs hat Folgendes geschrieben:
Wenn der name so lautet 'a_b_c'

dann muss man auch nach dieser reihenfolge gehen.

also

a,c oder a,b oder b,c

und nicht

c,b oder c,a oder b,a

was ich ziemlich doof finde.


Danke dir noch mal Jan.


Es ist nicht doof, das mach Sinn, man möchte ja zwischen Files
a_b und b_a unterscheiden können.
Wenn Reihenfolge unabhängig sein soll, dann muss du z.B zuerst nach einem Schlüsselwort suchen und dann nach Zweiten.
so z.B:
Code:

list1 = dir(fullfile(FilePath,['*',key1,'*','*.*']))
list1 = {list1.name}
list2 = dir(fullfile(FilePath,['*',key2,'*','*.*']))
list2 = {list2.name}
list = intersect(list1,list2)
 


Aber effektiver wäre in so einem Fall Reguläre Ausdrücke.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2, 3, 4, 5, 6  Weiter

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.