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

Suchen und Zusammensetzen

 

Lokdog
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 96
Anmeldedatum: 07.04.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 02.12.2016, 08:20     Titel: Suchen und Zusammensetzen
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem:

In meinem Ordner sind 155 txt Dateien.
Den Namen Aller Dateien habe ich schon in einen 155x1 Array gepackt.

Das sind Dateien aus 4 verschiedenen Messungen.

Die Dateien aus Messung 1 heißen:
'EI7000_01_PP_006.txt'

Die Dateien aus Messung 2 heißen:
'EI7000_01_PP_006_#2.txt'

Die Dateien aus Messung 3 heißen:
'EI7000_01_PP_006_#3.txt'

Die Dateien aus Messung 4 heißen:
'EI7000_01_PP_015_#4.txt'


Also wie man sieht bestimmt das # 2,3,4 Zeichen, um welche Messung es sich handelt.

Es gibt nicht zu jeder 1 Messung, auch eine zweite.
Ich möchte nun, das der 155x1 array (Names), durchsucht wird, ob es zum ersten Namen einen zweiten, dritten und vierten gibt, und diese 1-max 4 Namen in einem Neuen Array speichert.

Es muss nicht alle 4 geben, aber es muss mindestens 2 geben.


Ich denke es hört sich komplizierter an, als es ist.

Könnt ihr mir helfen?

Viele Grüße
Lokdog
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: 02.12.2016, 18:42     Titel: Re: Suchen und Zusammensetzen
  Antworten mit Zitat      
Hallo Lokdog,

Jetzt erkläre noch, wie wir Dir helfen können. Was ist Deine Frage? Was hast Du bisher versucht und woran hängt es noch?

Haben die "1. Messungen" alle die gleiche Länge des Filenamens? Dann könntest Du nach den kürzesten File-Namen suchen.
Code:
List = dir('*.txt');
Name = {List.name};
Len = cellfun('length', Name);
First = Name(Len == 20);
 

Jetzt kommt eine Schleife über diese Namen, Du hängst jeweils ein '_#X' dran und suchst per strcmp nach Übereinstimmungen.
Alternativ könntest Du das ganze auch alphabetisch sortieren. Zwischen den Namen der 1. Messungen stehen dann ja immer die anderen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 96
Anmeldedatum: 07.04.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 07.12.2016, 08:03     Titel:
  Antworten mit Zitat      
Guten Morgen Jan,

sorry für die verspätete Antwort.

Meine Frage ist, wie ich nun immer die gleichen Datei Namen in ein gemeinsames Array packen kann. Die Namen haben leider nicht immer die Gleiche Länge.

also mit:

Code:
dateien = dir(fullfile('Ort der Messdaten','*.txt'));

for i=1:155
    Names{i,1} = dateien(i,1).name;
   
end
 


bekomme ich schonmal alle Namen in einen Array.

Die Dateien heißen so:

Code:
'EI7000_01_PP_006.txt'
'EI7000_01_PP_006_#2.txt'
'EI7000_01_PP_006_#3.txt'
'EI7000_01_PP_007.txt'
'EI7000_01_PP_007_#2.txt'
'EI7000_01_PP_007_#3.txt'
'EI7000_01_PP_008.txt'
'EI7000_01_PP_008_#2.txt'
'EI7000_01_PP_008_#3.txt'
'EI7000_01_PP_009.txt'
'EI7000_01_PP_009_#2.txt'
'EI7000_01_PP_010.txt'
'EI7000_01_PP_010_#2.txt'
'EI7000_01_PP_010_#3.txt'
'EI7000_01_PP_011.txt'
'EI7000_01_PP_012.txt'
'EI7000_01_PP_012_#2.txt'
'EI7000_01_PP_012_#3.txt'
'EI7000_01_PP_012_#4.txt'
 


Wie man sieht, gehört alles mit 006 zusammen, alles mit 007 usw.

Ich suche nun also einen Befehl, der "Names" durchsucht, nach allen Namen mit 006 und diese in einen Neuen Array speichert.
Das ich das dann mit einer schleife mache, ist mir klar.
Nur wie der Befehl für "Suche nach 006, nehme den ganzen Namen und speichere ihn in von mir aus Names006" heißt, weiß ich nicht.


Viele Grüße
Lokdog
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: 07.12.2016, 13:18     Titel:
  Antworten mit Zitat      
Hallo Lokdog,

Code:
dateien = dir(fullfile('Ort der Messdaten','*.txt'));

% for i=1:155
%    Names{i,1} = dateien(i,1).name;
% end
%Einfacher:
Names = {dateien.name};
Names = sort(Names);  % Zur Sicherheit, aber DIR gibt eigentlich sortierte Namen aus

iResult = 0;
Result = cell(1, numel(Names));
for k = 1:numel(Names)
  [fPath, fName, fExt] = fileparts(Names{k});
  if ~any(fName == '#')
    index = strncmp(Names, fName, langth(fName));
    Measurement = Names(index);
    ...
    iResult = iResult + 1;
    Result{iResult} = ... ?
  end
end

Result = Result(1:iResult);
 

In dem "..." muss Du nun noch einfügen, wie die Dateien in ein Array gepackt werden sollen.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 96
Anmeldedatum: 07.04.16
Wohnort: Heilbronn
Version: ---
     Beitrag Verfasst am: 09.12.2016, 08:52     Titel:
  Antworten mit Zitat      
Hallo Jan,

Danke für deine Hilfe. Ich blicke zwar nicht so ganz wie deine Lösung funktioniert aber ich versuche durch zusteigen.

Ich bin gerade noch daran, das Problem mit regexpi zu lösen, sollte ja eigentlich auch möglich sein.
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: 09.12.2016, 11:30     Titel:
  Antworten mit Zitat      
Hallo Lokdog,

Klar, das geht auch mit regexpi, aber umständlicher als mit strncmp .

Gruß, Jan
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.